简介

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
Centos7实现Vsftpd虚拟用户配置_第1张图片
Centos7实现Vsftpd虚拟用户配置_第2张图片
Centos7实现Vsftpd虚拟用户配置_第3张图片
登陆tom
Centos7实现Vsftpd虚拟用户配置_第4张图片
Centos7实现Vsftpd虚拟用户配置_第5张图片
Centos7实现Vsftpd虚拟用户配置_第6张图片