1. 總體需求
根據(jù)用戶的訂閱數(shù)據(jù)信息,需要為該用戶提供FTP訪問空間姑蓝,定時推送至該用戶ftp路徑下唆貌。具體要求如下:
- 該用戶不允許切換路徑
- 只有只讀權(quán)限
- 通過Mysql來驗證FTP登陸
- 對外提供服務(wù)接口動態(tài)創(chuàng)建ftp虛擬用戶
2. 使用服務(wù)管理軟件安裝vsftp
- 首先在服務(wù)器上需要安裝vsftp服務(wù)。使用命令:“yum -y install vsftpd mysql-devel pam_mysql”蕉朵。 (注:會安裝vsftp及pam的mysql認(rèn)證程序)
- 停止原先服務(wù)器管理軟件自帶的服務(wù)proftpd腥光。啟動安裝的vsftpd服務(wù)关顷。使用命令:“service proftpd stop; service vsftpd start;”。
- 服務(wù)管理軟件配置(Webmin1.831 based on CentOS 6.8 ):使用root賬號登陸后武福,左側(cè)點擊“Webmin”Tab頁议双,點擊”Webmin配置”;
4.從ftp或url安裝捉片,輸入安裝地址(vsftpd的webmin模塊地址 http://www.ctohome.com/linux-vps-pack/soft/virtualmin/vsftpd4webmin.tar.gz平痰。地址可能失效,需要找可用的地址)伍纫,見下圖1宗雇,圖2。 - 服務(wù)管理軟件莹规,左側(cè)下方點擊刷新模塊赔蒲。再點擊左側(cè)“服務(wù)器”->“Vsftpd”,進(jìn)入vsftpd的配置頁面良漱。出現(xiàn)圖3頁面舞虱,則配置成功。
圖1
3. vsftpd 配置
首先進(jìn)一步配置vsftpd母市。登陸服務(wù)器或登錄服務(wù)管理軟件WebIm矾兜。(這里以直接操作服務(wù)器終端為例)。登陸服務(wù)器后患久,進(jìn)入路徑“/etc/vsftpd”,編輯vsftpd.conf文件椅寺。各項配置可參考vsftpd官網(wǎng)手冊浑槽。重要配置(但不限于):用戶配置路徑,ftp用戶名,虛擬用戶的權(quán)限等返帕。見圖4桐玻。
然后,為在配置文件中指定的ftp用戶創(chuàng)建用戶配置文件溉旋,配置文件的目錄為vsftpd.conf文件中user_config_dir=/etc/vsftpd/vuser_conf畸冲。故嫉髓,本文為/etc/vsftpd/vuser_conf观腊。創(chuàng)建同名文件,內(nèi)容見圖5算行。
其次梧油,重啟vsftpd:“service vsftpd start”。
最后州邢,使用本地用戶(配置文件中指定的用戶)嘗試登陸ftp儡陨,登陸成功,則配置完成量淌。
4. 安裝及配置Mysql虛擬用戶認(rèn)證
根據(jù)章節(jié)2骗村,已知已安裝pam_mysql模塊。登陸服務(wù)器呀枢,進(jìn)去/etc/pam.d目錄胚股,編輯文件(沒有則創(chuàng)建)vsftpd。該文件包含了虛擬用戶通過mysql來進(jìn)行登陸驗證和授權(quán)的相關(guān)數(shù)據(jù)庫信息裙秋。具體配置見圖6琅拌。
此時,需要到配置的數(shù)據(jù)庫去創(chuàng)建:用戶表摘刑,用戶名列名进宝,密碼列名等。圖5則表示枷恕,在數(shù)據(jù)庫hms中的v_ftpuser中的username列和password列党晋,分別表示ftp虛擬用戶的用戶名和密碼。
5. 配置vsftpd虛擬用戶
根據(jù)章節(jié)3可知徐块,虛擬用戶的配置文件路徑為/etc/vsftpd/vuser_conf未玻;在該目錄下創(chuàng)建虛擬用戶同名配置文件,主要需要包含的信息是該虛擬用戶的根路徑蛹锰、可讀可寫權(quán)限深胳、創(chuàng)建目錄的權(quán)限等。見圖7铜犬。
6. 小結(jié)
要達(dá)成虛擬用戶能夠訪問自己的ftp路徑需要有以下幾個條件:
- Vsftpd服務(wù)+pam_mysql服務(wù) 正確安裝
- Vsftpd.conf正確配置
- /etc/pam.d/vsftp文件中加入數(shù)據(jù)庫地址等相關(guān)信息
- 在所配置的數(shù)據(jù)庫中添加用戶舞终。
- 在步驟4中添加的用戶名轻庆,還需要在用戶配置路徑中創(chuàng)建同名用戶配置文件,以確保其訪問的路徑和權(quán)限正確敛劝。
7. 虛擬用戶創(chuàng)建操作腳本化
根據(jù)章節(jié)6可知余爆,在正確安裝及配置的前提下,需要創(chuàng)建一個虛擬用戶只需要數(shù)據(jù)庫中存在該用戶夸盟;用戶配置路徑下存在該用戶的配置文件即可蛾方。
數(shù)據(jù)庫中的用戶信息由外部系統(tǒng)添加,只需要關(guān)注:如何生成正確的用戶配置文件上陕。
- 創(chuàng)建虛擬用戶配置文件模板桩砰。配置文件為/hxspace/virtualuserTemplate。見圖8
- 由virtualuserTemplate文件創(chuàng)建一個新用戶配置文件释簿,并移動到用戶配置目錄下亚隅。(與用戶名同名),創(chuàng)建腳本/hxspace/adduser.sh庶溶。見圖9
- 當(dāng)需要創(chuàng)建新虛擬用戶時煮纵,調(diào)用腳本adduser.sh 傳入用戶名參數(shù)即可。命令為“sh /hxspace/adduser.sh username1”
8. 虛擬用戶創(chuàng)建操作服務(wù)化
根據(jù)章節(jié)7可知偏螺,每當(dāng)我們需要創(chuàng)建新虛擬用戶時行疏,只需調(diào)用adduser.sh腳本,并保證數(shù)據(jù)庫用戶表中存在該用戶即可套像。
但這種程度還無法滿足外部系統(tǒng)動態(tài)添加虛擬用戶的需求酿联。那么結(jié)合spring boot創(chuàng)建一個web服務(wù),能夠通過http協(xié)議接口來動態(tài)添加虛擬用戶凉夯。
- 常規(guī)的spring boot web集成货葬。
- 使用ganymed-ssh2庫,來執(zhí)行服務(wù)器命令劲够。
要點:
- 為保證安全性震桶,該服務(wù)將部署在ftp服務(wù)器本地,同時征绎,在程序中只是用一般用戶登錄蹲姐。但是,需要注意的時人柿,腳本中的命令大多需要root權(quán)限柴墩,那么則將root密碼,寫入adduser.sh凫岖。同時將改腳本設(shè)為只可執(zhí)行江咳。
- 根據(jù)adduser.sh可知,在腳本返回3時哥放,則表明用戶已存在歼指。返回0篙耗,則表示創(chuàng)建成功吮螺。
最終,可登陸ftp服務(wù)所在的服務(wù)器雇锡,執(zhí)行命令:http://127.0.0.1:yourport/createmethod?username=yourusername (需保證數(shù)據(jù)庫中存在該用戶)逝嚎。通過ftp登陸成功(路徑及權(quán)限正確)青柄,則整個流程結(jié)束衅枫。