CentOS7搭設FTP伺服器
FTP
主要用於檔案傳輸,在 Linux
上一般用 vsftpd
來實現,通過搭設 FTP
伺服器,可以實現檔案的共享,至少比坑爹的某度網盤強多了。
搭設 FTP
伺服器有三種可選的認證方式:匿名認證、本地使用者認證、虛擬使用者認證,安全性:匿名認證<本地使用者認證<虛擬使用者認證,配置複雜度:匿名認證<本地<虛擬使用者認證。
Linux
中檔案都有對應的所有者,虛擬使用者認證指的是,建立一個或多個 FTP
使用者,並將這些 FTP
使用者與 Linux
本地的某個使用者(如 vftpuser
)進行對映,這樣完成對映的使用者在對 FTP
目錄進行操作時等同於使用者 vftpuser
進行操作。此外,虛擬使用者認證模式可以允許對多個 FTP
分別進行配置,非常靈活方便。從靈活性與安全性兩個方面考慮,本文選擇使用虛擬使用者認證模式。
OK,準備開工!
一、基本環境
伺服器:CentOS7.5
客戶機:Ubuntu Mate18.10
FTP服務端:vsftpd
FTP客戶端:FileZilla(可選)
二、基本流程
為了看起來更簡潔,僅列出搭設基本流程及相關命令。
-
安裝
vsftpd
yum install vsftpd
-
建立虛擬使用者
用你喜歡的任何編輯器建立並編輯
/etc/vsftpd/vuser.list
檔案,內容如下:lilei lileipasswd hanmeimei hmmpasswd
口令認證檔案奇數行為使用者名稱,偶數行為對應的密碼
-
建立口令認證資料庫
db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db chmod 600 /etc/vsftpd/vuser.db
-T:轉換 -t:指定hash演算法 -f:指定使用者名稱
-
編輯
PAM
認證檔案建立並編輯
/etc/pam.d/vsftpd.vu
,內容如下:authrequiredpam_userdb.so db=/etc/vsftpd/vuser accountrequiredpam_userdb.so db=/etc/vsftpd/vuser
db指定口令認證資料庫,不含字尾名
-
建立本地使用者
useradd -d /home/vftpuser -s /sbin/nologin vftpuser chmod 755 /home/vftpuser
-d:指定使用者主目錄 -s:指定使用者登入shell,/sbin/nologin表示禁止使用者通過shell登入,提高安全性
-
對映
FTP
使用者到vftpuser
編輯
/etc/vsftpd/vsftpd.conf
,修改下列行:pam_service_name=vsftpd.vu# 指定pam認證檔案 guest_enable=YES# 啟用對映 guest_username=vftpuser# 指定對映的本地使用者 user_config_dir=/etc/vsftpd/vusers_dir# 指定FTP使用者配置檔案位置,如果不需要對每個使用者進行分別配置,可將此行註釋掉
-
為每個使用者進行單獨配置
建立
/etc/vsftpd/vuser_dir
,針對每個FTP
使用者建立同名配置檔案,此處以lilei
為例。建立並編輯/etc/vsftpd/vuser_dir/lilei
,內容如下:anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_root=/var/www/html
預設根目錄為對映使用者的家目錄,可通過
local_root
指定某個使用者的根目錄,注意需要將此目錄所有者改為vftpuser
。 -
重啟
vsftpd
systemctl start vsftpd
三、注意事項
- 將
vsftpd
加入開機啟動,防止伺服器重啟後無法訪問; - 如果
FTP
伺服器無法訪問,注意檢查防火牆與SElinux
設定; - 生成口令認證資料庫後,及時將
list
檔案刪除,防止密碼洩露。
歡迎關注公眾號