[关闭]
@hshustc 2015-10-02T06:40:35.000000Z 字数 4867 阅读 4550

CentOS7.0安装配置vsftp

Linux


注:本文内容和CentOS7.0安装配置vsftp(YUM)基本相同,主要对格式进行了优化并添加一些备注。

这里是用CentOS7.0来进行配置的,和其他不同的版本号大同小异,仅仅是在此做一个记录,方便自己查看的同时也能够分享出来给有需要的人看看

配置防火墙,开启所需端口

7.0使用的防火墙是firewall,我改成用iptables作为防火墙

(1)关闭firewall:

  1. systemctl stop firewalld.service
  2. #停止firewall
  3. systemctl disable firewalld.service
  4. #禁止firewall开机启动

(2)安装iptables防火墙

  1. yum install iptables-services
  2. #安装
  3. vi /etc/sysconfig/iptables
  4. #编辑防火墙配置文件
  5. # Firewall configuration written by system-config-firewall
  6. # Manual customization of this file is not recommended.
  7. *filter
  8. :INPUT ACCEPT [0:0]
  9. :FORWARD ACCEPT [0:0]
  10. :OUTPUT ACCEPT [0:0]
  11. -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  12. -A INPUT -p icmp -j ACCEPT
  13. -A INPUT -i lo -j ACCEPT
  14. -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
  15. -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
  16. -A INPUT -m state --state NEW -m tcp -p tcp --dport 10060:10090 -j ACCEPT
  17. -A INPUT -j REJECT --reject-with icmp-host-prohibited
  18. -A FORWARD -j REJECT --reject-with icmp-host-prohibited
  19. COMMIT
  20. :wq!
  21. #保存退出
  22. systemctl restart iptables.service
  23. #最后重启防火墙使配置生效
  24. systemctl enable iptables.service
  25. #设置防火墙开机启动

说明:21端口是ftp服务端口;10060到10090是vsftpd被动模式需要的端口,可自定义一段大于1024的tcp端口。

2、关闭selinux

  1. vi /etc/selinux/config
  2. #SELINUX=enforcing
  3. #注释掉
  4. #SELINUXTYPE=targeted
  5. #注释掉
  6. SELINUX=disabled
  7. #增加
  8. :wq! #保存退出
  9. setenforce 0 #使配置立即生效 Linux学习,http:// linux.it.net.cn

3、安装vsftp

  1. yum install -y vsftpd
  2. #安装vsftpd
  3. yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI
  4. #安装vsftpd虚拟用户配置依赖包
  5. systemctl start vsftpd.service
  6. #启动
  7. systemctl enable vsftpd.service
  8. #设置vsftpd开机启动

4、配置vsftp

  1. cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf-bak
  2. #备份默认配置文件
  3. 执行以下命令进行设置
  4. #关于匿名用户的设置
  5. sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" '/etc/vsftpd/vsftpd.conf'
  6. sed -i "s/#anon_upload_enable=YES/anon_upload_enable=NO/g" '/etc/vsftpd/vsftpd.conf'
  7. sed -i "s/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
  8. sed -i "s/#chown_uploads=YES/chown_uploads=NO/g" '/etc/vsftpd/vsftpd.conf'
  9. sed -i "s/#async_abor_enable=YES/async_abor_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
  10. sed -i "s/#ascii_upload_enable=YES/ascii_upload_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
  11. sed -i "s/#ascii_download_enable=YES/ascii_download_enable=YES/g" '/etc/vsftpd/vsftpd.conf'
  12. sed -i "s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=Welcome to FTP service./g" '/etc/vsftpd/vsftpd.conf'
  13. echo -e "use_localtime=YES\nlisten_port=21\nchroot_local_user=YES\nidle_session_timeout=300
  14. \ndata_connection_timeout=1\nguest_enable=YES\nguest_username=vsftpd
  15. \nuser_config_dir=/etc/vsftpd/vconf\nvirtual_use_local_privs=YES
  16. \npasv_min_port=10060\npasv_max_port=10090
  17. \naccept_timeout=5\nconnect_timeout=1" >> /etc/vsftpd/vsftpd.conf
  18. #guest_username=vsftpd 虚拟用户的宿主用户为vsftpd

5、建立虚拟用户文件

  1. touch /etc/vsftpd/virtusers
  2. 编辑虚拟用户名单文件:(第一行账号,第二行密码,注意:不能使用root做用户名,系统保留)
  3. vi /etc/vsftpd/virtusers
  4. web1
  5. 123456
  6. web2
  7. 123456
  8. web3
  9. 123456
  10. :wq!
  11. #保存退出

6、生成虚拟用户数据文件

  1. db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
  2. chmod 600 /etc/vsftpd/virtusers.db

7、 设定PAM验证文件,并指定对虚拟用户数据库文件进行读取

  1. #在/etc/pam.d/vsftpd的文件头部加入以下信息(在后面加入无效)
  2. #修改前先备份 cp /etc/pam.d/vsftpd /etc/pam.d/vsftpdbak
  3. vi /etc/pam.d/vsftpd
  4. auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
  5. account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
  6. 注意:如果系统为32位,上面改为lib,否则配置失败

8、新建系统用户vsftpd,用户目录为/home/wwwroot, 用户登录终端设为/bin/false(即使之不能登录系统)

  1. useradd vsftpd -d /home/wwwroot -s /bin/false
  2. chown vsftpd:vsftpd /home/wwwroot -R
  3. #如果虚拟用户的宿主用户为www,需要这样设置。
  4. chown www:www /home/wwwroot -R

9、建立虚拟用户个人vsftp的配置文件

  1. mkdir /etc/vsftpd/vconf
  2. cd /etc/vsftpd/vconf
  3. touch web1 web2 web3
  4. #这里创建三个虚拟用户配置文件
  5. mkdir -p /home/wwwroot/web1/http/
  6. vi web1
  7. #编辑用户web1配置文件,其他的跟这个配置文件类似
  8. local_root=/home/wwwroot/web1/http/
  9. write_enable=YES
  10. anon_world_readable_only=NO
  11. anon_upload_enable=YES
  12. anon_mkdir_write_enable=YES
  13. anon_other_write_enable=YES

10、最后重启vsftpd服务器

  1. systemctl restart vsftpd.service

备注1:

  1. guest_username=vsftpd #指定虚拟用户的宿主用户(就是我们前面新建的用户)
  2. guest_username=www
  3. #如果ftp目录是指向网站根目录,用来上传网站程序,可以指定虚拟用户的宿主用户为nginx运行账户www,可以避免很多权限设置问题

备注2:

每个用户的local_root文件夹是有root用户创建的,其权限应设置为755。因为权限的问题在该文件夹内无法直接上传文件。而如果设置为777则无法访问,这是由于vsftpd的安全性设置。解决上传问题的方法是在local_root文件夹内新建一个upload的文件夹,权限设置为777,可将文件上传到该文件夹。

备注3:

vsftpd中几种用户的区分:

备注4:

虚拟用户高级参数

  1. virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限;
  2. virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认是NO
  3. virtual_use_local_privs=YESwrite_enable=YES时,虚拟用户具有写权限(上传、下载、删除、重命名)。
  4. virtual_use_local_privs=NOwrite_enable=YESanon_world_readable_only=YES
  5. anon_upload_enable=YES时,虚拟用户不能浏览目录,只能上传文件,无其他权限。
  6. virtual_use_local_privs=NOwrite_enable=YESanon_world_readable_only=NO
  7. anon_upload_enable=NO时,虚拟用户只能下载文件,无其他权限。
  8. virtual_use_local_privs=NOwrite_enable=YESanon_world_readable_only=NO
  9. anon_upload_enable=YES时,虚拟用户只能上传和下载文件,无其他权限。
  10. virtual_use_local_privs=NOwrite_enable=YESanon_world_readable_only=NO
  11. anon_mkdir_write_enable=YES时,虚拟用户只能下载文件和创建文件夹,无其他权限。
  12. virtual_use_local_privs=NOwrite_enable=YESanon_world_readable_only=NO
  13. anon_other_write_enable=YES时,虚拟用户只能下载、删除和重命名文件,无其他权限。
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注