proftpd的配置方式相似apache,比vsftpd更易用,xampp就集成了proftpd.
sudo apt-get install proftpd-basic
安裝時默認做爲一個standalone server運行proftpd,若是天天的ftp請求量少,能夠安裝爲inetd服務,節省服務器資源.
這裏我使用默認值,安裝爲standalone server.
sudo netstat -antp|grep proftpd 查看proftpd監聽的21端口
用proftpd提供的ftpasswd新建虛擬用戶test並設置密碼:
sudo mkdir -p /png/proftpd
sudo ftpasswd \
--passwd \
--file=/png/proftpd/passwd \
--name=test \
--uid=122 \
--gid=65534 \
--home=/srv/ftp \
--shell=/bin/false
其中uid和gid我使用的是安裝proftpd時自動建立的系統用戶ftp:nogroup的uid和gid,執行cat /etc/passwd|grep ftp可見.
/srv/ftp是安裝proftpd時自動建立的目錄,全部者爲ftp:nogroup,權限爲755.
這樣虛擬用戶test以系統用戶ftp:nogroup登陸/srv/ftp即可以對該目錄進行讀寫.
Linux上的FTP Server的讀寫權限是映射到系統UGO(User Group Other)上的.
建立虛擬用戶時經過設置系統用戶uid和gid,以及合理地配置/srv/ftp目錄及其文件權限來實現讀寫控制.
建立新用戶時再次執行上述命令便可,根據須要改變一些參數.
好比我建立了一個以uid:gid爲1000:1000的系統用戶運行,登陸目錄爲/png/www/example.com的虛擬用戶eechen:
sudo ftpasswd \
--passwd \
--file=/png/proftpd/passwd \
--name=eechen \
--uid=1000 \
--gid=1000 \
--home=/png/www/example.com \
--shell=/bin/false
建立用戶不須要重載proftpd,由於proftpd每次認證時都會讀取認證文件.
設置passwd文件讀寫權限,確保proftpd能讀取該文件:
sudo chown proftpd:nogroup /png/proftpd/passwd
sudo chmod 600 /png/proftpd/passwd
sudo nano /etc/proftpd/proftpd.conf 在末尾加入:
DefaultRoot ~ #將用戶限定在本身的目錄中,上面test用戶對應的就是/srv/ftp
RequireValidShell off #禁用Shell請求認證
AuthOrder mod_auth_file.c #認證方式順序,這裏採用文件認證
AuthUserFile /png/proftpd/passwd #存放用戶名和密碼的文件
sudo service proftpd reload 重載使配置生效
FileZilla爲Linux提供了統一的二進制包,無需安裝,解壓運行便可:
http://sourceforge.net/projects/filezilla/files/FileZilla_Client/
FileZilla裏使用虛擬用戶test和eechen分別創建一個ftp鏈接時ProFTPD的內存( RES )使用狀況:
shell