一、說明
服務器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.測試成功
虛擬用戶會默認禁錮根