一、匿名用户
1、要求:
- vsftpd服务器只允许匿名登录
- 匿名用户在根目录下只能下载
- 匿名用户在pub子目录下可以新建、下载、上传、重命名文件(文件夹)
2、过程:
- (1)修改配置文件
- vi /etc/vsftpd/vsftpd.conf
- anonymous_enable=YES
- local_enable=NO
- write_enable=YES
- anon_umask=022
- anon_upload_enable=YES
- anon_mkdir_write_enable=YES
- anon_other_write_enable=YES
- anon_world_readable_only=NO
- systemctl restart vsftpd
- (2)SELLinux设置
- 设置安全策略:
setsebool -P allow_ftpd_anon_write=1 - 修改安全上下文:
chcon -R -t public_content_rw_t /var/ftp/pub
- (3)防火墙配置
firewall-cmd --permanent --add-sevices=ftp
二、本地用户
1、要求:
- 允许账号登录FTP服务器,但不能登录本地系统
- 对账号根目录进行限制,不能进入根目录以外的任何目录
2、过程:
- (1)创建用户,并禁止本地登录
- useradd -s /sbin/nologin user
- passwd user
- (2)创建根目录,并赋予其他用户相应权限
- mkdir -p /var/www/html
- chmod o+w /var/www/html
- (3)修改安全上下文,使根目录能够写入
- chcon -t public_content_rw_t /var/www/thml
- (4)修改配置文件
- anonymous_enable=NO //禁止匿名用户登录
- local_enable=YES //允许本地用户登录
- write_enable=YES
- local_umask=022
- local_root=/var/www/html //设置本地用户的根目录为/var/www/html
- chroot_local_user=YES
- allow_writeable_chroot=YES
- (5)修改SELinux允许本地用户登录
- getsebool -a|grep ftp
- setsebool -P ftp_home_dir=1
- (6)重启vsftpd服务,使配置生效
- systemctl restart vsftpd
- (7)设置防火墙规则
- firewall-cmd --permanent --add-services=ftp
- firewall-cmd --reload
三、虚拟用户
1、要求:
- vuser1只能进行下载
- vuser2能进行下载和上传
- 对下载/上传流量进行控制
2、过程:
- (1)操作虚拟用户列表
- 建立虚拟用户的用户名、密码列表的文本文件
vi /etc/vsftpd/vusers.list - 用db_load转换工具,将文本文件(上一步所建立的文件)转化为数据库文件
db_load -T -t hash -f vusers.list vusers.d - 修改虚拟用户列表文件及数据库文件访问权限。
chmod 600 /etc/vsftpd/vusers.*
- (2)创建虚拟用户对应的本地用户
- 禁止他们本地登录
- 设置用户主目录的访问权限
- (3)修改SELinux安全上下文,允许对用户主目录读写
chcon -t public_content_rw_t /var/ftp/teacherdir - (4)建立支持虚拟用户的PAM认证文件
vi /etc/pam.d/vusers.vu - (5)修改/etc/vsftpd/vsftpd.conf主配置文件
vi /etc/vsftpd/vsftpd.conf
- anonymous_enable=NO
- local_enable=YES //使用虚拟用户一定要启用本地用户
- chroot_local_user=YES //将所有本地用户限制在家目录中(需添加)
- guest_enable=YES //启用用户映射功能,允许虚拟用户登录(需添加)
- pam_service_name=vusers.vu //指定对虚拟用户进行PAM认证的文件名vuser.vu
- user_config_dir=/etc/vsftpd/vconfig //指定虚拟用户的配置文件的位置(需添加)
- allow_writeable_chroot=YES
- (6)为虚拟用户ftp、techer建立各自独立的配置文件
mkdir /etc/vsftpd/vconfig
- ** vuser1**
- vi /etc/vsftpd/vconfig/vuser1
- guest_username=svuser1 //设置ftp对应的本地用户为ftpuser
- local_root=/var/ftp/share //用户登录后所在的目录
- anon_world_readable_only=NO //允许浏览和下载
- anon_max_rate=500000 //限定传输速率为500KB/s
- vuser2
- vi /etc/vsftpd/vconfig/vuser2
- guest_username=svuser2
- local_root=/var/ftp/noshare
- anon_world_readable_only=NO
- write_enable=YES //允许写入
- anon_upload_enable=YES //允许上传
- anon_mkdir_write_enable=YES //允许创建文件夹
- anon_max_rate=1000000 //限定传输速度为1000KB/s
- (7)修改SELinux允许本地用户登录和匿名用户具有写入权限
- (8)重新加载vsftpd服务,使配置生效
systemctl restart vsftpd