当前位置:   article > 正文

CentOS7搭建FTP(虚拟用户)_setsebool ftp_home_dir

setsebool ftp_home_dir

采用的是虚拟用户和firewall防火墙

  1. yum install -y vsftpd ftp
  2. firewall-cmd --permanent --zone=public --add-port=20/tcp
  3. firewall-cmd --permanent --zone=public --add-port=21/tcp
  4. firewall-cmd --permanent --zone=public --add-port=22/tcp
  5. firewall-cmd --permanent --zone=public --add-service=ftp
  6. firewall-cmd --reload
  7. #查看selinux关于ftp的状态
  8. getsebool -a | grep ftp

结果大致如下:

  1. setsebool -P tftp_home_dir 1
  2. setsebool -P ftpd_full_access 1
  3. #这个是SELinux的一些开关
  4. #要把tftp_home_dir、ftpd_full_access开启
  5. #-P是永久生效,不加-P,则重启后还原;1是打开,0是关闭

然后新建一个ftp的宿主用户(即存在Linux系统的用户,不是虚拟用户)

  1. useradd -g root -M -d /var/www/html -s /sbin/nologin ftpuser
  2. passwd ftpuser
  3. #此处的ftpuser就是你的账户名
  4. chown -R ftpuser.root /var/www/html
  5. #把 /var/www/html 的所有权给ftpuser.root
  6. #这里的 /var/www/html 就是ftp的根目录,没有的话自行创建,也可以换成其他目录

虚拟用户的用户认证是通过pam方式去认证的,pam文件里面指定了认证的db文件,db文件又是通过明文用户名和密码文件生成而来。那么首先我们要指定pam文件,这个在 /etc/vsftpd/vsftpd.conf 配置文件是通过 pam_service_name=vsftpd 配置指定的,其位置是 /etc/pam.d/vsftpd,编辑该文件,把文件内容全部注释掉,加上以下两行:
64位系统:

  1. auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
  2. account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd

32位系统

  1. auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
  2. account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd

db=/etc/vsftpd/vuser_passwd 指定了db文件的位置,接下来就是生成db文件,由于db文件是通过明文用户名和密码文件生成而来,所以先创建一个保存明文用户名和密码的文件 vuser_passwd.txt
该文件奇行为用户名,偶行为密码:

 vim /etc/vsftpd/vuser_passwd.txt

如下:


然后通过以下命令生成db文件:

  1. cd /etc/vsftpd
  2. db_load -T -t hash -f vuser_passwd.txt vuser_passwd.db

至此用户的认证就知道怎么一回事了。如果要添加新的用户,在编辑 vuser_passwd.txt 后要再次生成一下db文件。然后现在每个用户的具体配置,如指向目录、可读写权限等又是在哪配置的呢,原来它是通过一个用户对应一个配置文件来实现的,且这个文件必须用FTP用户名去做文件名,建一个目录专门存放这些文件:

  1. mkdir vuser_conf
  2. vim vuser_conf/account1

文件内容大致如下,注意每一行配置的最后不能有空白符

  1. #设置虚拟用户的目录
  2. local_root=/var/www/html
  3. #设置虚拟用户是否可以写入
  4. write_enable=YES
  5. anon_umask=022
  6. anon_world_readable_only=NO
  7. #允许虚拟用户的上传功能
  8. anon_upload_enable=YES
  9. #设置虚拟用户是否可以创建文件夹
  10. anon_mkdir_write_enable=YES
  11. #设置虚拟用户是否可以执行其他的写入操作,比如删除、重命名、覆盖操作。
  12. anon_other_write_enable=YES
  13. #最多允许同一账号在10个不同的IP登录
  14. max_per_ip=10
  15. #最大下载速度(字节/秒)
  16. local_max_rate=2500000
  17. #session超时时间
  18. #idle_session_timeout=300
  19. #连接超时时间
  20. #data_connection_timeout=90
  21. #最多连接数
  22. #max_clients=10

最后配置vsftpd.conf,若下面某些字段没有在配置中找到,自行添加就好

  1. cd /etc/vsftpd
  2. vim vsftpd.conf
  3. #修改一下几处
  4. #不允许匿名访问
  5. anonymous_enable=NO
  6. #本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问
  7. local_enable=YES
  8. #可以进行写操作
  9. write_enable=YES
  10. #禁止匿名用户上传
  11. anon_upload_enable=NO
  12. #禁止匿名用户建立目录
  13. anon_mkdir_write_enable=NO
  14. #支持ASCII模式的上传和下载功能
  15. ascii_upload_enable=YES
  16. ascii_download_enable=YES
  17. #限制用户只能在FTP主目录
  18. #若没有chroot_list文件,自行创建,每一行为一个用户名
  19. chroot_local_user=NO
  20. chroot_list_enable=YES
  21. # (default follows)
  22. chroot_list_file=/etc/vsftpd/chroot_list
  23. #开启ip4监听
  24. listen=YES
  25. #关闭ip6监听
  26. listen_ipv6=NO
  27. #PAM服务下Vsftpd的验证配置文件名
  28. pam_service_name=vsftpd
  29. #指定vsftpd服务的运行帐户,不指定时使用ftp
  30. #这里的ftpuser就是刚才useradd时创建的Linux系统用户
  31. nopriv_user=ftpuser
  32. # 设定启用虚拟用户功能
  33. guest_enable=YES
  34. # 指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了
  35. guest_username=ftpuser
  36. # 虚拟用户配置文件存放的路径
  37. user_config_dir=/etc/vsftpd/vuser_conf
  38. # 如果启用了限定用户在其主目录下需要添加这个配置
  39. allow_writeable_chroot=YES
  40. # NO时,虚拟用户和匿名用户有相同的权限,默认是NO
  41. virtual_use_local_privs=YES

最后:
filezilla连接ftp时可能会出现读取目录超时的情况,解决方法如下

/etc/vsftpd/vsftpd.conf末尾添加上以下三句

  1. #开启pasv被动模式
  2. pasv_enable=YES
  3. pasv_min_port=6000
  4. pasv_max_port=7000
  5. #这个是用于检测pasv的安全检查,YES为关闭安全检查
  6. pasv_promiscuous=YES
  7. #firewall防火墙打开6000-7000端口
  8. firewall-cmd --permanent --zone=public --add-port=6000-7000/tcp
  9. firewall-cmd --reload

配置好后就可以开启vsftpd服务

  1. systemctl start vsftpd
  2. #开机启动
  3. systemctl enable vsftpd

总结:

  1. ftp的根目录在创建ftp宿主用户时就指定好,在/etc/vsftpd/vuser_conf里面的虚拟用户配置中的local_root项要在根目录里面;
  2. 改变ftp的根目录
    • usermod -d /xxx/xxx来切换
    • 同时/etc/vsftpd/vuser_conf里面的虚拟用户配置也要跟着换
    • 然后重启vsftpd
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/139916
推荐阅读
相关标签
  

闽ICP备14008679号