一、说明
服务器A:
系统:centos6
IP:172.17.16.169
服务器B:
系统:centos7
IP:172.17.17.173
二、服务器B配置数据库
1.安装数据库服务
2.安全脚本
3.创建需要的数据库、表、用户
create database vsftpd;
create table vsftpd.ftpusers(name char(20),password char(50));
grant select on vsftpd.ftpusers to ftp@'%' identified by 'password';
4.在表中插入数据
insert vsftpd.ftpusers value ('ftp1',password('ftp1password'));
insert vsftpd.ftpusers value ('ftp2',password('ftp2password'));
insert vsftpd.ftpusers value ('ftp3',password('ftp3password'));
insert vsftpd.ftpusers value ('ftp4',password('ftp4password'));
insert vsftpd.ftpusers value ('ftp5',password('ftp5password'));
三、安装支持mysql的pam模块
1.centos6
yum -y install pam_mysql
2.centos7——编译安装
#开发包/包组
yum -y install mariadb-devel
yum -y groupinstall Development\ Tools
yum -y install pam-devel
#config
./configure --with-pam-mods-dir=/lib64/security --with-pam=/usr
#编译安装
make && make install
#生成的模块文件路径
/usr/lib64/security/pam_mysql.so
/usr/lib64/security/pam_mysql.la
四、在FTP服务器上配置vsftpd服务
1.在FTP服务器上建立pam认证所需文件
vim /etc/pam.d/vsftpd.mysql
#添加如下两行
auth required pam_mysql.so user=ftp passwd=password host=172.17.17.173 db=vsftpd table=ftpusers user column=name passwdcolumn=password crypt=2
account required pam_mysql.so user=ftp passwd=password host=172.17.17.173 db=vsftpd table=ftpusers usercolumn=name passwdcolumn=password crypt=2
加密方式在README中有说明
2.建立相应用户与目录
useradd -s /sbin/nologin -m -d /var/ftproot vuser
#主目录有w权限,则用户将被拒绝登陆
chmod 555 /var/ftproot
mkdir -p /var/ftproot/ftp{1,2,3,4,5}/{upload,pub}
chmod 555 /var/ftproot/*
#对upload设置w权限用来上传文件
setfacl -R -m d:u:vuser:rwx /var/ftproot/ftp{1,2,3,4,5}/{upload,pub}
3.修改vsftpd配置文件,配合mysql认证
anonymous_enable=YES
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.mysql
五、配置虚拟用户具有不同的访问权限
vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限
每个虚拟用户的配置文件名同虚拟用户的用户名。
配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可
1.在vsftpd.conf指定其路径及名称
vim /etc/vsftpd/vsftpd.conf
添加下行
user_config_dir=/etc/vsftpd/conf.d
2.为每个用户提供单独的配置文件
mkdir /etc/vsftpd/conf.d
touch /etc/vsftpd/conf.d/ftp{1,2,3,4,5,6}
3.在上一步骤创建的文件中配置虚拟用户的访问权限
有关设置
注意:=两边不能有空格
anon_upload_enable=YES
允许上传
要保证对非根且登陆目录有w权限
anon_mkdir_write_enable=YES
修改上传的目录
anon_other_write_enable=YES
修改上传的文件
local_root=/ftproot
登录目录改变至指定的目录
六、测试
1.各用户配置文件
conf.d/ftp1
local_root=/var/ftproot/ftp1/
anon_upload_enable=YES
anon_other_write_enable=YES
conf.d/ftp2
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/var/ftproot/ftp2/
conf.d/ftp3
local_root=/var/ftproot/
ftp4和ftp5没写
2.测试成功
虚拟用户会默认禁锢根