继续上章vsftpd,介绍vsftpd的虚拟用户配置

一、背景需求   当有多个用户需要不同的权限时,本地用户、匿名用户都无法控制那么精细,这时候可以考虑下虚拟用户了,例如有如下要求。  

| | 家目录 | 读 | 写 |删除 |是否允许切换目录 | | -------- | -------- | -------- | | tom | /myftp/tom | √ | × |× |× | | jerry | /myftp/jerry | √ | √ |× |× | | admin | /myftp | √ | √ |√ |√ |

  二、详细配置

```
	a. 安装程序:
		[root@node1 ~]# yum -y install vsftpd
		
	b. 创建配置文件:
		[root@node1 ~]# cp /etc/vsftpd/vsftpd.conf{,.bak}
		[root@node1 ~]# vim  /etc/vsftpd/vsftpd.conf
		#关闭匿名用户,本地用户必须开启,否则虚拟用户无法正常运行
		anonymous_enable=NO
		local_enable=YES
		write_enable=YES
		#设置禁锢用户,默认开启后/etc/vsftpd/chroot_list文件中的用户都被禁锢
		chroot_list_enable=YES
		chroot_list_file=/etc/vsftpd/chroot_list
		#设置虚拟用户相应功能(虚拟用户对应的本地用户、
		guest_enable=YES
		guest_username=virtual
		pam_service_name=vsftpd.pam
		user_config_dir=/etc/vsftpd/vuser_conf.d
		#设置数据连接(被动模式)的端口范围
		pasv_min_port=30000
		pasv_max_port=30999
		#关闭反向域名解析,用于加速访问
		reverse_lookup_enable=NO
	c.创建pam认证文件,并指定虚拟用户的账号、密码数据库位置
		注意:如果是32位的系统pam_userdb.so模块不在lib64目录下,详情可通过 rpm -ql  pam  |   grep userdb 得知
		[root@node1 ~]# vim /etc/pam.d/vsftpd.pam 
		auth required /lib64/security/pam_userdb.so db=/etc/vsftpd_login
		account required /lib64/security/pam_userdb.so db=/etc/vsftpd_login
		
	d.创建用户密码数据库,奇数行位用户名、偶数行位密码
		[root@node1 ~]# vim /etc/vsftpd_login
		tom
		123
		jerry
		123
		admin
		123
		[root@node1 ~]# db_load -t hash -T -f /etc/vsftpd_login /etc/vsftpd_login.db 
		
	e.为每个虚拟用户创建不同的权限
		[root@node1 ~]# mkdir /etc/vsftpd/vuser_conf.d
		#TOM用户权限设置:
		[root@node1 ~]# vim /etc/vsftpd/vuser_conf.d/tom 
		local_root=/myftp/tom
		anon_world_readable_only=YES
		anon_upload_enable=NO
		anon_mkdir_write_enable=NO
		anon_other_write_enable=NO
		[root@node1 ~]# mkdir /myftp/tom
		[root@node1 ~]# touch /myftp/tom/tom.read
		#Jerry用户权限配置:
		[root@node1 ~]# cp /etc/vsftpd/vuser_conf.d/{tom,jerry}
		[root@node1 ~]# vim /etc/vsftpd/vuser_conf.d/jerry
			local_root=/myftp/jerry
			anon_world_readable_only=YES
			anon_upload_enable=YES
			anon_mkdir_write_enable=YES
			anon_other_write_enable=NO
		[root@node1 ~]# mkdir /myftp/jerry
		[root@node1 ~]# touch /myftp/jerry/jerry.read.write
		#Admin用户权限配置:
		[root@node1 ~]# cp /etc/vsftpd/vuser_conf.d/{jerry,admin}
		[root@node1 ~]# vim /etc/vsftpd/vuser_conf.d/admin 
		local_root=/myftp/tom
		anon_world_readable_only=YES
		anon_upload_enable=YES
		anon_mkdir_write_enable=YES
		anon_other_write_enable=YES
		[root@node1 ~]# mkdir /myftp/admin
		[root@node1 ~]# touch /myftp/admin/admin.read.write.delete.no_chroot
		#禁锢用户
		[root@node1 ~]# vim /etc/vsftpd/chroot_list
		tom
		jerry
		#设置目录权限
		[root@node1 ~]# chown virtual  -R  /myftp/ 
		#重启服务
		[root@node1 ~]# !sys
		systemctl restart vsftpd 

三、测试效果 Tom用户测试结果:

Jerry用户测试结果:

Admin用户测试结果:

Admin用户也被禁锢了...