實驗前說明:本實驗需要在兩臺centos向主機上實現,一臺作爲ftp服務器,一臺做數據庫服務器
在這裏我使用centos6做數據庫服務器,centos7做ftp服務器
一:安裝所需要的包和包組
在centos6上安裝數據庫所需要的包
yum -y install mysql-server
在centos7因爲沒有對應的rpm包,需要手動編譯安裝
yum -y groupinstall "development tools"
yum -y install pam-devel vsftpd
下載源碼包
pam_mysql-0.7RC1.tar.gz
解壓包 tar xvf pam__mysql-0.7RC1.tar.gz
然後進入這個目錄下進行編譯cd pam_mysql-0.7RC1/
./configure --with-mysql=/usr --with-pam=/usr
--with-pam-mods-dir=/lib64/security
根據提示我們還需要安裝maria-devel這個包
安裝之後,重新進行編譯
如果沒有出現錯誤,就可以進行下一步啦
Make &&make install
二.在數據庫服務器上創建虛擬用戶賬號
建立存儲虛擬用戶數據庫和連接的數據庫用戶
建立連接數據庫的用戶
在數據庫中準備相關表來存儲虛擬用戶的賬號
測試連接
三 添加虛擬用戶
根據需要添加所需要的用戶,爲了安全應該使用password
函數加密其密碼後存儲
在ftp服務器上配置vsftpd服務
在ftp服務器上建立pam認證所需文件
Vim /etc/pam.d/vsftpd.mysql添加如下兩行
auth 表示認證
account 驗證賬號密碼正常使用
required 表示認證要通過
pam_mysql.so 模塊是默認的相對路徑,是相對/lib64/security/ 路
徑而言,也可以寫絕對路徑;後面爲給此模塊傳遞的參數
user=vsftpd 爲登錄mysql 的用戶
passwd=magedu 登錄mysql 的的密碼
host=mysqlserver mysql 服務器的主機名或ip 地址
db=vsftpd 指定連接msyql 的數據庫名稱
table=users 指定連接數據庫中的表名
usercolumn=name 當做用戶名的字段
passwdcolumn=password 當做用戶名字段的密碼
crypt=2 密碼的加密方式爲mysql password()函數加密
四 建立相應用戶和修改vsftpd配置文件,使其適應mysql認證,建立虛擬用戶映射的系統用戶及對應的目錄
useradd -s /sbin/nologin -d /var/ftproot vuser
chmod 555 /var/ftproot centos7 需除去ftp 根目錄的寫權限
mkdir /var/ftproot/{upload,pub}
setfacl m u:vuser:rwx /var/ftproot/upload
確保/etc/vsftpd/vsftpd.conf中已經啓用了以下選項
Anonymous_enable=yes
並添加下面兩項
guest_enable=yes
guest_username=vuser
修改下面一項,原系統用戶無法登錄
五 啓動vsftpd服務
Systemctl start vsftpd
查看端口開啓情況
Ss -ntl |grep :21
六 測試:利用ftp客戶端工具,以虛擬用戶登錄驗證結果