环境:CentOS6.8
1、[root@system-4 ~]# vim vusers.list
tom
123456
harry
123456
2、将vusers.list 转为vusers.db
[root@system-4 ~]# db_load -T -t hash -f vusers.list vusers.db
3、chmod 600 vusers.db
4、新建一个虚拟用户
[root@system-4 ~]# useradd -d /var/ftproot/ -s /sbin/nologin virtual
5、[root@system-4 ~]# chown virtual.virtual /var/ftproot/
6、修改pam认证
[root@system-4 pam.d]# vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/root/vusers
account required pam_userdb.so db=/root/vusers
7、编辑vsftpd主配置文件支持pam
pam_service_name=vsftpd.vu
guest_enable=YES
guest_username=virtual
开启写权限
anon_mkdir_write_enable=YES
关闭匿名用户访问
anonymous_enable=NO
8、设置selinux
setsebool -P allow_ftpd_full_access 1
9、防火墙开放20 、21端口
iptables -I INPUT -p tcp – -dport 21 -j ACCEPT
iptables -I INPUT -p tcp –dport 20 -j ACCEPT
10、为每个虚拟用户配置权限,在vsftpd主配置文件中添加:
user_config_dir=/etc/vsftpd/users_dir
新建一个目录用于存放每个虚拟用户的权限文件
[root@system-4 ~]# mkdir /etc/vsftpd/users_dir
[root@system-4 ~]# cd /etc/vsftpd/users_dir
[root@system-4 users_dir]# touch tom
设置tom的权限,vim tom
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
创建空白的用户harry文件
[root@system-4 users_dir]# touch harry
9、重启vsftpd服务
10、加入开机启动:chkconfig vsftpd on
mariadb数据库vsftp虚拟用户认证
一、安装相关包:
yum install pam_mysql mysql_devel mariadb-server -y
二、数据库创建
1、新建一个vsftpd数据库
MariaDB [(none)]> CREATE DATABASE vsftpd;
2、数据库用户授权
MariaDB [(none)]> grant select on vsftpd.* to vsftpd@localhost identified by '123456';
MariaDB [(none)]> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by '123456';
刷新授权:MariaDB [(none)]> flush privileges;
3、创建用户表
MariaDB [(none)]> use vsftpd;
MariaDB [vsftpd]> create table users (
-> id int AUTO_INCREMENT NOT NULL,
-> name char(20) binary NOT NULL,
-> password char(48) binary NOT NULL,
-> primary key(id)
-> );
4、添加测试用户
MariaDB [vsftpd]> insert into users(name,password) values('tom',password('123456'));
MariaDB [vsftpd]> insert into users(name,password) values('harry',password('123456'));
三、vsftpd配置
1、建立pam认证文件
[root@system-4 ~]# vim /etc/pam.d/vsftpd.mysql
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.so user=vsftpd passwd=123456 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
2、修改vsftpd主配置文件
pam_service_name=vsftpd.mysql
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=YES
3、为每个虚拟用户配置权限,在vsftpd主配置文件中添加:
user_config_dir=/etc/vsftpd/users_dir
新建一个目录用于存放每个虚拟用户的权限文件
[root@system-4 ~]# mkdir /etc/vsftpd/users_dir
[root@system-4 ~]# cd /etc/vsftpd/users_dir
[root@system-4 users_dir]# touch tom
设置tom的权限,vim tom
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
创建空白的用户harry文件
[root@system-4 users_dir]# touch harry
4、重启vsftpd服务
其他:编译安装
[root@localhost]#wget http://www.huzs.net/soft/vsftpd/pam_mysql-0.7RC1.tar.gz
#tar xvf pam_mysql-0.7RC1.tar.gz
[root@localhost]#cd pam_mysql-0.7RC1
[root@localhost]# ./configure –with-openssl –with-pam-mods-dir=/lib64/security/
[root@localhost]# make && make install