FTP服务(3)实现基于文件验证的vsftpd虚拟用户
1、虚拟用户
所有虚拟用户会统一映射为一个指定的系统帐号:
访问共享位置,即为此系统帐号的家目录各虚拟用户可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定虚拟用户
帐号的存储方式:
文件:编辑文本文件,此文件需要被编码为hash格式
奇数行为用户名,偶数行为密码
db_load -T -t hash -f vusers.txt vusers.db
关系型数据库中的表中:
实时查询数据库完成用户认证
mysql库:
pam要依赖于pam-mysql
/lib64/security/pam_mysql.so
/usr/share/doc/pam_mysql-0.7/README
2、实现基于文件验证的vsftpd虚拟用户
- 实验环境:centos7.4(ip=192.168.218.135)
- iptables -F 关闭防火墙,临时生效下次重启机器失效
- setenforce 0 关闭SELinux,临时生效下次重启机器失效
虚拟用户的实现
所有虚拟用户会统一映射为一个指定的系统帐号:访问共享位置,即为此系统帐号的家目录
各虚拟用户可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定
1)创建用户数据库文件
vim /etc/vsftpd/vusers.txt user1 user1pass user2 user2pass db_load -T -t hash -f /etc/vsftpd/vusers.txt /etc/vsftpd/vusers.db chmod 600 /etc/vsftpd/vusers.db
2)创建系统用户和FTP目录
useradd -r -d /data/ftp/ -s /sbin/nologin vuser mkdir -pv /data/ftp/pub/chmod -w /data/ftp/ setfacl -m u:vuser:rwx /data/ftp/pub/
3)创建pam配置文件
vim /etc/pam.d/vsftpd.db auth required pam_userdb.so db=/etc/vsftpd/vusers #这里指定数据库文件,不需要加.db account required pam_userdb.so db=/etc/vsftpd/vusers
4)指定pam配置文件
vim /etc/vsftpd/vsftpd.conf guest_enable=YES guest_username=vuser #指定系统用户 pam_service_name=vsftpd.db #指定pam配置文件
5)建立各虚拟用户独立的配置文件
mkdir /etc/vsftpd/vusers.d/ vim /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/vusers.d/ vim /etc/vsftpd/vusers.d/user1 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES #匿名用户可删除和修改上传的文件 mkdir /data/user2/ vim /etc/vsftpd/vusers.d/user2 systemctl restart vsftpd