CentOS 7 配置ftp服务器

1:允许匿名用户模式

  [root@www ~]# yum install -y vsftpd

  [root@www ~]# yum install -y ftp

  [root@www ~]# vim /etc/vsftpd/vsftpd.conf(在开始位置添加以下内容)
    anonymous_enable=YES  (允许或者禁止匿名用户访问模式)
    anon_umask=022  (匿名用户上传文件的umask值)
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
  [root@www ~]# ls -ld /var/ftp/pub
  drwxr-xr-x. 3 root root 16 Jul 13 14:38 /var/ftp/pub

  [root@www ~]# chown -Rf ftp /var/ftp/pub

  [root@www ~]# getsebool -a | grep ftp
  ftp_home_dir --> off
  ftpd_anon_write --> off
  ftpd_connect_all_unreserved --> off
  ftpd_connect_db --> off
  ftpd_full_access --> off
  ftpd_use_cifs --> off
  ftpd_use_fusefs --> off
  ftpd_use_nfs --> off
  ftpd_use_passive_mode --> off
  httpd_can_connect_ftp --> off
  httpd_enable_ftp_server --> off
  sftpd_anon_write --> off
  sftpd_enable_homedirs --> off
  sftpd_full_access --> off
  sftpd_write_ssh_home --> off
  tftp_anon_write --> off
  tftp_home_dir --> off
  [root@www ~]# setsebool -P ftpd_full_access=on

 

  [root@www ~]# systemctl start vsftpd

  [root@www ~]# systemctl enable vsftpd

  完成!

2:允许本地用户登陆(除root用户,如果想允许root用户需删除/etc/vsftpd/user_list 和 /etc/vsftpd/ftpusers)

  [root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf:
  anonymous_enable=NO
  local_enable=YES
  write_enable=YES
  local_umask=022
  dirmessage_enable=YES
  xferlog_enable=YES
  connect_from_port_20=YES
  xferlog_std_format=YES
  listen=NO
  listen_ipv6=YES
  pam_service_name=vsftpd
  userlist_enable=YES
  tcp_wrappers=YES

  [root@linuxprobe ~]# getsebool -a | grep ftp
  ftp_home_dir --> off
  ftpd_anon_write --> off
  ftpd_connect_all_unreserved --> off
  ftpd_connect_db --> off
  ftpd_full_access --> off
  ftpd_use_cifs --> off
  ftpd_use_fusefs --> off
  ftpd_use_nfs --> off
  ftpd_use_passive_mode --> off
  httpd_can_connect_ftp --> off
  httpd_enable_ftp_server --> off
  sftpd_anon_write --> off
  sftpd_enable_homedirs --> off
  sftpd_full_access --> off
  sftpd_write_ssh_home --> off
  tftp_anon_write --> off
  tftp_home_dir --> off
  [root@linuxprobe ~]# setsebool -P ftpd_full_access=on

  [root@linuxprobe ~]# systemctl restart vsftpd
  [root@linuxprobe ~]# systemctl enable vsftpd

  完成!

3:虚拟用户模式

  [root@linuxprobe ~]# cd /etc/vsftpd/
  [root@linuxprobe vsftpd]# vim vuser.list(创建虚拟账户名称密码文件,奇数行名称,偶数行密码)
  zhangsan
  redhat
  lisi
  redhat

  [root@linuxprobe vsftpd]# db_load -T -t hash -f vuser.list vuser.db(用哈希(hash)算法将原始的明文信息文件转换成数据库文件,并且降低数据库文件的权限,并删除源文件)
  [root@linuxprobe vsftpd]# file vuser.db
  vuser.db: Berkeley DB (Hash, version 9, native byte-order)
  [root@linuxprobe vsftpd]# chmod 600 vuser.db
  [root@linuxprobe vsftpd]# rm -f vuser.list

  [root@linuxprobe ~]# useradd -d /var/ftproot -s /sbin/nologin virtual(创建一个虚拟账户,账户名;virtual,账户家目录:var/ftproot,不允许登录服务器,并升高账户家目录权限)
  [root@linuxprobe ~]# ls -ld /var/ftproot/
  drwx------. 3 virtual virtual 74 Jul 14 17:50 /var/ftproot/
  [root@linuxprobe ~]# chmod -Rf 755 /var/ftproot/

  [root@linuxprobe ~]# vim /etc/pam.d/vsftpd.vu(新建一个用于虚拟用户认证的 PAM 文件 vsftpd.vu,其中 PAM 文件内的“db=”参数为使用 db_load 命令生成的账户密码数据库文件的路径,但不用写数据库文件的后缀)
  auth  required  pam_userdb.so db=/etc/vsftpd/vuser
  account  required  pam_userdb.so db=/etc/vsftpd/vuser

  [root@linuxprobe ~]# mkdir /etc/vsftpd/vusers_dir/(新建一个目录,在里面分别创建两个以 zhangsan 和 lisi 命名的文件文件中写入允许的相关权限(使用匿名用户的参数))
  [root@linuxprobe ~]# cd /etc/vsftpd/vusers_dir/
  [root@linuxprobe vusers_dir]# touch lisi
  [root@linuxprobe vusers_dir]# vim zhangsan
  anon_upload_enable=YES  (允许匿名用户上传文件)
  anon_mkdir_write_enable=YES  (允许匿名用户创建目录)
  anon_other_write_enable=YES  (允许匿名用户修改目录名称或删除目录)

  (在 vsftpd 服务程序的主配置文件中通过 pam_service_name 参数将 PAM 认证文件的名称修改为 vsftpd.vu,并通过添加 user_config_dir 参数来定义这两个虚拟用户不同权限的配置文件所存放的路径)

  [root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
  anonymous_enable=NO
  local_enable=YES
  guest_enable=YES
  guest_username=virtual
  allow_writeable_chroot=YES
  write_enable=YES
  local_umask=022
  dirmessage_enable=YES
  xferlog_enable=YES
  connect_from_port_20=YES
  xferlog_std_format=YES
  listen=NO
  listen_ipv6=YES
  pam_service_name=vsftpd.vu
  userlist_enable=YES
  tcp_wrappers=YES

  user_config_dir=/etc/vsftpd/vusers_dir

  [root@linuxprobe ~]# getsebool -a | grep ftp
  ftp_home_dir –> off
  ftpd_anon_write –> off
  ftpd_connect_all_unreserved –> off
  ftpd_connect_db –> off
  ftpd_full_access –> off
  ftpd_use_cifs –> off
  ftpd_use_fusefs –> off
  ftpd_use_nfs –> off
  ftpd_use_passive_mode –> off
  httpd_can_connect_ftp –> off
  httpd_enable_ftp_server –> off
  sftpd_anon_write –> off
  sftpd_enable_homedirs –> off
  sftpd_full_access –> off
  sftpd_write_ssh_home –> off
  tftp_anon_write –> off
  tftp_home_dir –> off
  [root@linuxprobe ~]# setsebool -P ftpd_full_access=on  

  [root@linuxprobe ~]# systemctl restart vsftpd
  [root@linuxprobe ~]# systemctl enable vsftpd

   测试,完成!

posted on 2019-06-27 09:48  西虹市市长  阅读(505)  评论(0编辑  收藏  举报

导航