当前位置:   article > 正文

CentOS 7搭建基于虚拟用户的FTP服务

centos7 搭建给予虚拟用户的ftp服务

一、ftp文件传输服务

1、FTP连接的端口号

  • 21:传输控制使用,进行身份验证授权访问

  • 20:传输数据使用

2、FTP连接模式

  • 主动模式:服务器端通过20号端口给客户端传输数据,POST指令表示主动连接,默认工作在主动模式

  • 被动模式:服务器端开放指定范围的端口号等待客户端建立数据连接,pasv指令表示被动模式

3、FTP传输模式

  • 文本 模式:文本模式不支持传输流媒体数据,支持文本文件

  • 二进制模式:使用广泛支持传输文本文件流媒体数据

4、FTP身份验证的方式

  • 匿名:使用ftp用户或者anonymous账户验证不需要密码

  • 本地身份验证:需要使用账户密码进行身份验证后访问数据

  • 虚拟账户验证:将多个用户映射到一个系统账户进行验证

二、安装vsftpd服务

1、安装vsftpd服务

  1. [root@centos01 ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm <!--安装ftp服务器端-->
  2. [root@centos01 ~]# rpm -ivh /mnt/Packages/ftp-0.17-67.el7.x86_64.rpm <!--安装ftp客户端-->

2、配置虚拟用户

1) 创建虚拟账户数据库文件

  1. [root@centos01 ~]# vim /etc/vsftpd/vusers.list
  2. <!--奇数行是用户名,偶数行是密码-->
  3. bob
  4. pwd@123
  5. tom
  6. pwd@123
  7. alice
  8. pwd@123

2)生成虚拟账户数据库文件,数据库文件vusers.db

[root@centos01 ~]# db_load -T -t hash -f /etc/vsftpd/vusers.list /etc/vsftpd/vusers.db

3)添加虚拟账户映射创建ftp根目录

  1. [root@centos01 ~]# mkdir /benet
  2. [root@centos01 ~]# useradd -d /benet/ftproot -s /sbin/nologin virtual

4)设置ftp根目录的权限

[root@centos01 ~]# chmod 755 /benet/ftproot/

3、配置pam身份验证和创建虚拟账户权限目录

1) 配置PAM什么验证

  1. [root@centos01 ~]# vim /etc/pam.d/vsftpd.vu
  2. #%PAM-1.0
  3. auth required pam_userdb.so db=/etc/vsftpd/vusers
  4. account required pam_userdb.so db=/etc/vsftpd/vusers

2)创建虚拟机账户权限目录

[root@centos01 ~]# mkdir /etc/vsftpd/vusers_dir

4、修改vsftp主配置文件配置虚拟账户ftp

1)修改主配置文件

  1. [root@centos01 ~]# vim /etc/vsftpd/vsftpd.conf
  2. anonymous_enable=NO <!--是否允许匿名访问-->
  3. local_enable=YES <!--是否允许本地系统用户访问-->
  4. write_enable=YES <!--启用任何形式的写入权限(如上传、删除文件等)-->
  5. local_umask=022 <!--设置本地用户所上传文件的默认权限掩码值-->
  6. anon_umask=022 <!--设置匿名用户所上传文件的默认权限掩码值-->
  7. dirmessage_enable=YES<!--用户切换进入目录时显示.message文件(如果存在)的内容-->
  8. xferlog_enable=YES <!--启用xferlog日志,默认记录到/var/log/xferlog-->
  9. connect_from_port_20=YES <!--允许服务器主动模式(从20端口建立数据连接)-->
  10. xferlog_std_format=YES <!--启用标准的xferlog日志格式,
  11. 若禁用此项,将使用vsftp自己的日志格式-->
  12. listen=NO <!--是否以独立运行的方式监听服务-->
  13. listen_ipv6=YES
  14. chroot_local_user=YES<!--是否将FTP本地用户禁锢在宿主目录中-->
  15. allow_writeable_chroot=YES<!--允许被限制用户的主目录具有写权限-->
  16. guest_enable=YES
  17. guest_username=virtual <!--指定映射的系统用户名称-->
  18. user_config_dir=/etc/vsftpd/vusers_dir/
  19. <!--位不同的虚拟用户建立独立的配置文件-->
  20. pam_service_name=vsftpd.vu <!--指定新的PAM认证文件-->
  21. userlist_enable=YES <!--是否启用user_list用户列表文件-->
  22. tcp_wrappers=YES <!--是否启用TCP_Wrappers主机访问控制-->

2)主配置文件常见选项

CentOS 7搭建基于虚拟用户的FTP服务
CentOS 7搭建基于虚拟用户的FTP服务

3)创建虚拟账户权限文件

  1. [root@centos01 ~]# touch /etc/vsftpd/vusers_dir/bob
  2. [root@centos01 ~]# touch /etc/vsftpd/vusers_dir/tom
  3. [root@centos01 ~]# touch /etc/vsftpd/vusers_dir/alice

4)给bob用户设置访问ftp完全控制权限

  1. [root@centos01 ~]# vim /etc/vsftpd/vusers_dir/bob
  2. anon_upload_enable=YES <!--允许上传数据-->
  3. anon_mkdir_write_enable=YES <!--允许创建目录或文件-->
  4. anon_other_write_enable=YES <!--允许删除或覆盖文件目录-->

5)设置tom账户拥有上传权限

  1. [root@centos01 ~]# vim /etc/vsftpd/vusers_dir/tom
  2. anon_upload_enable=YES <!--允许上传数据-->

6)修改ftp根目录的所有者

[root@centos01 ~]# chown virtual:virtual /benet/ftproot/

7)启动ftp服务,设置开机自动启动

  1. [root@centos01 ~]# systemctl start vsftpd <!--启动服务-->
  2. [root@centos01 ~]# systemctl enable vsftpd <!--设置开机自动启动-->

8)客户端验证bob权限

CentOS 7搭建基于虚拟用户的FTP服务

CentOS 7搭建基于虚拟用户的FTP服务

9)客户端验证tom权限

CentOS 7搭建基于虚拟用户的FTP服务

CentOS 7搭建基于虚拟用户的FTP服务

10)客户端验证alice权限

CentOS 7搭建基于虚拟用户的FTP服务

CentOS 7搭建基于虚拟用户的FTP服务

三、总结

1、全局配置项字段详解

  • listen=NO: 是否以独立运行的方式监听服务;

  • listen_address=IP地址:设置监听f t p服务的ip地址,默认监听所有IP地址;

  • listen_port=21:设置监听ftp服务的端口号;

  • write_enable=YES:开启写入权限;

  • download_enable=YES:允许下载权限;

  • dirmessage_enable=YES:用户切换进入目录时显示 “.message”文件(如果已存在)的内容;

  • xferlog_enable=YES:启用xferlog日志,默认记录到 /var/log/xferlog;

  • xferlog_std_format=YES:ftp日志格式;

  • connect_from_port_20=YES:数据连接端口号默认20;

  • pasv_enable=NO:禁止被动模式连接;默认允许被动模式连接;

  • pasv_max_port=21600:起始端口号;

  • pasv_min_port=21700:结束端口号;

  • pam_service_name=vsftpd:开启PAM验证;

  • userlist_enable=YES:允许user_list列表用户登录ftp;

  • userlist_deny=YES:不允许user_list列表用户登录ftp;

  • max_clients=0:限制多个客户端同时连接(0为无限制);

  • max_per_ip=0:允许相同IP地址访问ftp连接次数(0为无限制);

  • tcp_wrappers=YES:ftp的访问控制列表提升安全性使用
    匿名配置项字段详解;

  • anonymous_enable=YES:是否允许匿名访问;

  • anon_umask=022:设置匿名用户所上传文件的默认权限掩码值(反掩码);

  • anon_root=/var/ftp:设置匿名用户的FTP根目录;

  • anon_upload_enable=YES;是否允许匿名用户上传文件;

  • anon_mkdir_write_enable=YES:是否允许匿名用户由创建目录的写入权限;

  • anon_other_write_enable=YES:是否允许匿名用户有其他写入权限,如对文件改名、覆盖及删除文件等;

2、本地用户配置项

  • local_enable=YES:是否允许本地用户访问;

  • local_umask=022:设置本地用户所上传文件的默认权限掩码值(反掩码);

  • local_root=/var/ftp:设置本地用户的FTP根目录(默认为用户的宿主目录);

  • chroot_local_user=YES:是否将FTP本地用户禁锢在宿主目录中;

  • allow_writeable_chroot=YES:允许被限制用户的主目录具有写权限;

  • local_max_rate=0:限制本地用户的最大传输速率(0为无限制),单位为字节/秒(B/s);

3、虚拟用户配置项

  • guest_username=test:指定映射的系统用户名称;

  • guest_enable=YES:是否启用虚拟用户;

  • allow_writeable_chroot=允许被限制用户的主目录具有写权限(此项必须写入,否则可能会报错);

  • anon_world_readable_only=NO:允许用户下载目录内容;

  • anon_other_write_enable=YES:允许匿名用户有其他写入权限,如重命名、覆盖及删除文件等;

  • user_config_dir=/etc/vsftpd/vusers_dir:指定虚拟用户独立的配置文件目录;

———————— 本文至此结束,感谢阅读 ————————

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/139906
推荐阅读
相关标签
  

闽ICP备14008679号