文件共享服务之vsftpd虚拟用户认证(vsftpd+pam+mariadb)

一、准备环境
1-1:Server 1;
OS:CentOS 6.9
IP:192.168.1.61
SOFTWARE:vsftpd
# yum -y install vsftpd mysql pam_mysql
注意:pam_mysql由epel源提供,需提前配置好epel的yum源。

1-2:Server 2;
OS:CentOS 7.3
IP:192.168.1.76
SOFTWARE:5.5.56-MariaDB
# yum -y install mariadb mariadb-server mariadb-devel


二、创建文件共享服务的虚拟用户账号
2-1:准备数据库及相关表;
# systemctl start mariadb.service
MariaDB [(none)]> create database vsftpd;
MariaDB [(none)]> grant select on vsftpd.* to vsftpd@'192.168.1.%' identified by 'vsftpd';
//注意:由于mariadb的安装方式不同,pam_mysql.so基于unix sock连接mariadb服务器时可能会出问题,可授权一个可远程连接的mariadb并访问vsftpd数据库的用户。
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> use vsftpd;
MariaDB [(vsftpd)]> create table users (id int unsigned auto_increment not null primary key,name varchar(50) binary not null,password char(48) binary not null);

2-2:添加虚拟用户,调用PASSWORD函数加密后存储;
MariaDB [(vsftpd)]> insert into users(name,password) values('guojing',password('ronger')),('huangrong',password('jinggege'));
//添加两个用户,用户1:“guojing”,密码“ronger”;用户2:“huangrong”,密码“jinggege”;二用户的密码调用mariadb内置函数password()加密。


三、配置vsftpd
3-1:建立pam认证所需文件;
#vim /etc/pam.d/vsftpd.mariadb
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=192.168.1.76 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=192.168.1.76 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
//有关crypt=0|1|2等含义,参看pam_mysql的README文件,因前面设置了用户密码调用mariadb内置函数password()加密,故这里设置为2。
# rpm -ql pam_mysql
# less /usr/share/doc/pam_mysql-0.7/README

3-2:建立虚拟用户映射的系统用户及对应的目录;
# useradd -s /sbin/nologin -d /var/ftproot vuser
# mkdir -pv /var/ftproot
# chmod go+rx /var/ftproot

3-3:修改vsftpd的配置文件,使用mariadb认证;
# vim/etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.mariadb
//注意:此处将pam_service_name=vsftpd修改为pam_service_name=vsftpd.mariadb后,本地用户将无法登录vsftp。
# /etc/init.d/vsftpd start
# netstat -tnlp |grep :21


四、虚拟用户登录测试
4-1:可用Windows命令行、IE、FTP客户端工具登录验正,此处以Linux命令行工具为例。
# lftp -u guojing 192.168.1.61
//完成虚拟用户访问vsftpd服务器。


五、为虚拟用户设置不同的访问权限
5-1:配置vsftpd,设置一个虚拟用户配置文件目录,目录名称不限;
# vim vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_config

5-2:创建所需要的虚拟用户配置文件目录;
# mkdir /etc/vsftpd/vusers_config

5-3:配置虚拟用户的访问权限
# vim /etc/vsftpd/vusers_config/guojing
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
//虚拟用户的权限配置文件名同虚拟用户的用户名,用户“guojing”可以下载文件、上传文件、上传目录。
# cd /etc/vsftpd/vusers_config
# cp guojing huangrong
# sed -i 's/YES/NO/g' huangrong
//用户“huangrong”只能下载文件


六、虚拟用户登录测试
6-1:可用Windows命令行、IE、FTP客户端工具登录验正,此处以Linux命令行工具为例。
# lftp -u guojing 192.168.1.61
# lftp -u huangrong 192.168.1.61
//测试不同虚拟用户的不同访问权限。

 

posted on 2017-10-12 23:16  Cured  阅读(608)  评论(0编辑  收藏  举报