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

 

posted @ 2018-06-26 16:44  Gmiao  阅读(395)  评论(0编辑  收藏  举报