简介
Vsftpd基于系统用户访问FTP服务器,当系统用户越来越多时会变得不利于管理且对系统安全形成隐患,因此可以使用Vsftpd的虚拟用户配置来实现把虚拟用户映射到真实用户并设置相应权限的效果
前期准备
准备一台Centos7虚拟机,配置IP地址,同步系统时间,关闭防火墙和selinux 安装Vsftpd
[root@localhost ~]# yum install vsftpd -y
安装依赖包
[root@localhost ~]# yum install yum install pam* libdb-utils libdb* -y
虚拟用户配置
配置虚拟用户文件
[root@localhost ~]# vi /etc/vsftpd/ftpusers.txt
jack #用户名
123456 #密码
tom
123123
创建数据库认证文件
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db
#修改权限为700
[root@localhost ~]# chmod 700 /etc/vsftpd/vsftpd_login.db
配置pam认证文件
#先进行备份
[root@localhost ~]# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
#原有的配置内容需要注释或删除,否则虚拟用户将无法登陆
[root@localhost ~]# vi /etc/pam.d/vsftpd
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login
创建真实用户
[root@localhost ~]# useradd -s /sbin/nologin ftpuser
修改Vsftpd配置文件
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
#启用Pam认证
pam_service_name=vsftpd
#启用虚拟用户
guest_enable=YES
#虚拟用户映射的真实用户
guest_username=ftpuser
#虚拟用户配置文件目录
user_config_dir=/etc/vsftpd/vsftpd_user_conf
#虚拟用户拥有和本地用户相同的权限
virtual_use_local_privs=YES
创建虚拟用户配置文件
[root@localhost ~]# vi /etc/vsftpd/vsftpd_user_conf/jack
local_root=/home/ftpuser/jack
write_enable=YES
[root@localhost ~]# vi /etc/vsftpd/vsftpd_user_conf/tom
local_root=/home/ftpuser/tom
write_enable=YES
创建虚拟用户目录
[root@localhost ~]# mkdir /home/ftpuser/{tom,jack}
测试验证
[root@localhost ~]#echo jack > /home/ftpuser/jack/1.txt
[root@localhost ~]#echo tom > /home/ftpuser/tom/2.txt
启动Vsftpd服务器
[root@localhost ~]# systemctl start vsftpd
登陆jack 登陆tom