实验环境是CentOS 7.4
有两台主机,一台做ftp服务器,另外一台做mariadb服务器。
host1的IP为1.1.1.128 ,host2的IP为1.1.1.131
host1: yum install vsftpd -y
host2: yum install mariadb-server
1. 实验准备:
因为我的CentOS 7的epel源中没有pam_mysql这个rpm包,所以我决定自行编译安装
wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz tar xf pam_mysql-0.7RC1.tar.gz
进入文件夹:
安装好pam-devel包
yum install pam-devel -y ./configure --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security make && make install
查看/usr/lib64/security/pam_mysql.so是否存在,如果存在 则表明安装成功。
2. 准备mariadb数据库:
a. 创建好vsftpd数据库
b. 授予vsftpd权限,推荐位SELECT即可
c. 创建虚拟用户的数据库
d. 插入虚拟用户信息
CREATE DATABASE vsftpd; USE vsftpd; CREATE TABLE users ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name CHAR(20) BINARY NOT NULL, password CHAR(48) BINARY NOT NULL ); GRANT SELECT ON vsftpd.* TO vsftpd@'1.1.1.128' IDENTIFIED BY 'redhat'; INSERT INTO users(name,password) values('archlinux',PASSWORD('zyxasr'));
3. 准备好pam相关配置
vim /etc/vsftpd/vsftpd.conf
添加以下内容
pam_service_name=vsftpd.mysql guest_enable=YES guest_username=virtualuser allow_writeable_chroot=YES user_config_dir=/etc/vsftpd/vusers
创建对应的用户配置文件
mkdir /etc/vsftpd/vusers vim archlinux
添加以下内容
anon_upload_enable=YES #可上传 anon_mkdir_write_enable=YES # 可以创建 anon_other_write_enable=YES # 可以删除
接下来, 编写/etc/pam.d/vsftpd.mysql文件,使其能够读取和验证虚拟用户信息
vim /etc/pam.d/vsftpd.mysql
auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=redhat host=1.1.1.131 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=redhat host=1.1.1.131 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
里面的crypt=2表示虚拟用户的密码用的是mysql自带的password加密
如果crypt=0表示明文
重启 vsftpd 服务,即可完成vsftpd+pam+mariadb体系