采用vsftpd配置archlinux為ftp服務器。
什么是xinetd模式和initd模式
像其它守護程序一樣,vsftpd提供了standalone和inetd(inetd或xinetd)兩種運行模式。簡單解釋一下, standalone一次性啟動,運行期間一直駐留在內存中,優點是對接入信號反應快,缺點是損耗了一定的系統資源,因此經常應用於對實時反應要求較高的專業FTP服務器。inetd恰恰相反,由於只在外部連接發送請求時才調用FTP進程,因此不適合應用在同時連接數量較多的系統。此外,inetd模式不占用系統資源。除了反應速度和占用資源兩方面的影響外,vsftpd還提供了一些額外的高級功能,如inetd模式支持per_IP(單一IP)限制,而 standalone模式則更有利於PAM驗證功能的應用。
xinetd運行模式
大多數較新的系統采用的是xinetd超級服務守護進程。使用“vi /etc/xinetd.d/vsftpd” 看一下它的內容,如下:
disable = no socket_type = stream wait = no # 這表示設備是激活的,它正在使用標准的TCP Sockets。
如果“/etc/vsftpd.conf”中的有選項為“listen=YES”,注銷它
最后,重啟xinetd,命令如下:
$ /etc/rc.d/init.d/xinetd restart
需要注意的是,“/etc/xinetd.d”目錄中僅能開啟一個FTP服務。
standalone模式
standalone模式便於實現PAM驗證功能。進入這種模式首先要關閉xinetd下的vsftpd,設置
“disable = yes”,或者注銷掉“/etc/inetd.conf”中相應的行。然后修改“/etc/vsftpd.conf”中的選項為“listen=YES”如果是standlone模式,那么它是作為單獨的一個服務啟動的,不需要系統協作,不作為系統服務,如果要是成為xinetd模式,那么它的服務就要受系統服務的限制,比如創建一個新的服務進程,但是也有缺點,如果xinetd服務本身出了問題,那么相關的服務也是會受到影響的。
xinetd模式和standalone模式的區別
以xinetd模式運行的服務表示該服務進程並不以守護進程執行,以FTPD進程為例吧,以xinetd模式運行這個服務,情況是這樣的,本身FTP服務是會監聽21號端口的,但是以這種模式運行這個服務的話,21號端口則由xinetd進程來監聽(此時FTPD服務並沒有運行),如果你的網卡接收到有21號端口請求,則有xinetd進程會去調用FTPD程序,將在21號端口接收到的請求數據移交給FTPD進程去處理,處理完后FTPD進程退出,而xinetd進程繼續監聽21號端口,這有點類似windows的svhost進程;而以 standalone模式運行的服務則是服務進程,如ftpd以守護進程在內存中運行,接收到21號端口的請求后由FTPD進程fork出一個子進程進行處理,而原進程繼續監聽21號端口。
安裝vsftpd
sudo pacman -S vsftpd
配置/etc/vsftpd.conf
sudo vim /etc/vsftpd.conf
允許匿名登陸
anonymous_enable=YES
vsftp匿名用戶為ftp,其根目錄為/srv/ftp
客戶端登陸測試
響應: 227 Entering Passive Mode (10,0,2,15,104,175).
命令: LIST
錯誤: 20 秒后無活動,連接超時
錯誤: 讀取目錄列表失敗
數據端口無法讀取。
今天看到有人說是內核與seccomp兼容問題,看看如何解決。
解決方案: 在vsftpd.conf中添加
seccomp_sandbox=NO
至此解決了vsftd.conf的問題。
FTP 數字代碼的意義
110 重新啟動標記應答。
120 服務在多久時間內 ready 。
125 數據鏈路端口開啟,准備傳送。
150 文件狀態正常,開啟數據連接端口。
200 命令執行成功。
202 命令執行失敗。
211 系統狀態或是系統求助響應。
212 目錄的狀態。
213 文件的狀態。
214 求助的訊息。
215 名稱系統類型。
220 新的聯機服務 ready 。
221 服務的控制連接端口關閉,可以注銷。
225 數據連結開啟,但無傳輸動作。
226 關閉數據連接端口,請求的文件操作成功。
227 進入 passive mode 。
230 使用者登入。
250 請求的文件操作完成。
257 顯示目前的路徑名稱。
331 用戶名稱正確,需要密碼。
332 登入時需要賬號信息。
350 請求的操作需要進一部的命令。
421 無法提供服務,關閉控制連結。
425 無法開啟數據鏈路。
426 關閉聯機,終止傳輸。
450 請求的操作未執行。
451 命令終止 : 有本地的錯誤。
452 未執行命令 : 磁盤空間不足。
500 格式錯誤,無法識別命令。
501 參數語法錯誤。
502 命令執行失敗。
503 命令順序錯誤。
504 命令所接的參數不正確。
530 未登入。
532 儲存文件需要賬戶登入。
550 未執行請求的操作。
551 請求的命令終止,類型未知。
552 請求的文件終止,儲存位溢出.
553 未執行請求的的命令,名稱不正確。