本文旨在複習vsftpd的高級應用配置mysql
實驗要求算法
1.FTP的身份認證要實現基於虛擬用戶的身份認證,並建立2個虛擬用戶lance和rednanjingsql
2.PAM認證模塊基於本地的MySQL數據庫,即安裝Pam_MySQL模塊數據庫
3.虛擬用戶lance能夠在目錄/test中擁有至高無上的權限,讀寫刪;vim
4.虛擬用戶rednanjing在目錄/test僅僅能夠讀,而無其餘權限;bash
實驗環境、拓撲服務器
本實驗中yum源都是Aliyun Yum源框架
拓撲以下ide
部署步驟1.安裝MySQL數據庫、建立認證表函數
說明:VSFTP認證方式能夠分爲3種:
1.基於系統帳戶[即宿主機的/etc/passwd文件];
2.基於指定的存放帳號密碼的文件[須要建立];
3.基於虛擬用戶的,如和MySQL結合;
不管是哪種認證方式,VSFTPD程序自身是沒有認證功能的,是調用了Linux的PAM認證框架完成認證的,任何須要調用PAM認證框架的程序須要在/etc/pam.d建立相關的pam配置文件。這裏咱們使用基於MySQL的虛擬用戶認證,那麼須要作什麼呢?
1.首先要讓PAM認證框架可以基於MySQL來認證,即安裝好Pam_MySQL模塊;
2.要在/etc/pam.d爲vsftpd程序建立好配置文件,同時配置好vsftpd認證方式。
1.1 通用二進制安裝Mariadb
以前已經安裝過Mariadb,參考《MariaDB二進制安裝及基本管理》,此處再也不重複安裝。
固然也可以使用yum -y install mysql mysql-server mysql-devel安裝也可!
1.2 安裝Pam_MySQL模塊包[EPEL源]
yum -y install mysql_mysql
1.3 建立虛擬用戶認證所須要的MySQL數據庫
service mysqld start mysql -h localhost -u root -p
#建立存放虛擬用戶帳號密碼等信息的表,能夠參考以下
#表結構以下
值得說明的是:這裏爲何定義密碼爲48位?
爲了保護密碼不直接明文存儲在數據庫中,因此這裏咱們加密的方式,而即將採用的加密算法生成的長度就是48位,因此你懂的!
1.4 按照要求建立lance和rednanjing用戶,填寫相關的表字段
#在認證表ftp_auth_user中插入兩條用戶記錄
#查詢表數據,能夠看到password函數對zxczxc密碼進行了加密
#建立完成後,可使用mysql -h localhost -u vsftpd -pzxczxc來驗證是否配置正確
部署步驟2.建立VSFTPD用到的PAM認證配置文件
2.1 任何程序要想使用PAM認證框架有2個步驟,首先在/etc/pam.d/下建立一個pam配置文件,其次該程序中要指明調用pam認證,並使用剛纔建立的pam配置文件。這裏咱們來建立一個pam配置文件:
vi /etc/pam.d/vsftp.mysql 這個配置文件是VSFTP調用PAM認證框架的基礎
部署步驟3.安裝配置VSFTPD,並指明要調用的PAM完成虛擬用戶認證
3.1 安裝VSFTP服務器端,直接使用yum便可
yum -y install vsftpd
3.2 創建虛擬用戶映射的系統用戶及其對應目錄
useradd -s /sbin/nologin -d /var/virtualftp virtualuser chmod go+rx /var/virtualftp/
說明:不管是匿名、虛擬用戶認證,其實本質都必須映射爲Linux系統上的一個用戶。這很好理解,由於不管是上傳、下載等都是在Linux上的文件系統上操做的,而文件系統不認識MySQL數據庫,也不認識匿名用戶,它只認識/etc/passwd中的系統用戶,因此本質都是映射到一個/etc/passwd的用戶!
3.3 編輯VSFTPD主配置文件
useradd -s /sbin/nologin -d /var/virtualftp virtualuser chmod go+rx /var/virtualftp/ anonymous_enable=yes [必須YES] chroot_local_user=yes [建議YES,讓用戶登陸後的根路徑鎖定,不越權進入/etc等] guest_enable=yes [必須YES] guest_username=virtualuser [指爲剛纔建立的虛擬用戶映射的系統用戶] pam_service_name=vsftp.mysql [指明調用步驟2建立的pam配置文件]
部署步驟4.爲不一樣虛擬用戶配置不一樣權限
剛纔說了其實全部的虛擬用戶經過PAM_MySQL認證後,都被映射爲virtualuser這個系統用戶,那麼全部虛擬用戶權限不都同樣了嗎?其實VSFTPD自有妙計。
4.1 繼續編輯VSFTPD配置文件
vim /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/virtualusers_config 添加該行
4.2 爲lance用戶指派上傳、下載、刪除權限
vim /etc/vsftpd/virtualusers_config/lance 固然了在這以前請建立好相關目錄/etc/vsftpd/virtualusers_config和文件lance、rednanjing,這裏我直接演示權限賦予
4.3 同理,爲rednanjing指派權限
vim /etc/vsftpd/virtualusers_config/rednanjing
至此,全部配置已經完成,接下來進行測試吧!
部署步驟5.VSFTP驗證虛擬用戶認證
5.1 啓動vsftpd服務
service vsftpd strat
5.2 客戶端鏈接,以lance身份進行,分別測試上傳、刪除、建立目錄等
ftp 10.134.140.63 輸入用戶名lance 密碼zxczxc
測試上傳
測試新建目錄
測試刪除
5.3 測試rednanjing是否權限被成功禁止呢!