Vsftpd的安裝和配置教程,vsftpd配置教程
需要使用ftp來做圖片伺服器,就選用了vsftpd來實現。安裝起來比較簡單,但是在過程中出現了幾個問題,為了防止以後使用,就記錄一下整個過程。
安裝
首先本人使用的是ubuntu系統,安裝vsftpd直接使用命令即可:
sudo apt-get install vsftpd
安裝完成之後需要查看對應的連接埠是否開放了,ftp使用的是21連接埠:
netstat -npltu | grep 21
登陸。
等待安裝完成之後,可以直接在本地進行登陸,登陸的命令如下:
ftp localhost
然後出出現輸入帳號密碼的介面,由於本人使用的是用來學習的虛擬機器,所以也沒有必要設定多個帳號,習慣性直接使用root從而減少一些許可權的問題。
但是當我輸入root的帳號和對應的密碼之後卻出現了如下的問題:
問題也就是:
331 Please specify the password.
530 Login incorrect.
說我登陸不正確,可是我能夠確定帳號和密碼都輸入無誤的,然後就查了查,在網上發現有人也出現了同樣的問題,但是他的解決辦法是直接刪除/etc/pam.d/vsftpd,裡面的解釋是:
因為ubuntu啟用了PAM,所以在用到vsftpd的時候需要用到/etc/pam.d/vsftpd這個檔案,還說預設源碼安裝的時候不會有這個檔案。所以才會導致除了匿名使用者外本機使用者無法登陸,然後就刪除了這個檔案,串連ftp出現 331 Please specify the password 的解決辦法
我試了一下,將該檔案刪除之後確實能夠登陸的。但是後來想想不太對,既然是etc下面的檔案,也就是設定檔,那麼它肯定有存在的道理,也不應該無緣無故的刪除。然後又卸載重裝,重新審視該問題。
現在我們知道了該問題是由PAM導致的,但是什麼PAM本人還不太清楚,然後大概的查了查資料,可以參考這篇文章:PAM-Linux可插拔認證模組的基本概念與架構
從中可以直到PAM的全程是:可插拔認證模組(Pluggable Authentication Module–PAM)機制,可以讓使用者輕易在應用程式中插入新的認證模組或替換原先的組件。
那麼現在的思路就清楚了,在使用Vsftpd的時候,ubuntu會啟用PAM模組(至於使用源碼安裝是否會啟用PAM模組,本人並沒有實驗,因此不能確認),使用新的認證機制。然而使用了這個認證機制才導致了使用root使用者無法登陸,那麼我們就應該查看一下這個認證機制究竟做了什麼,查看/etc/pam.d/vsftpd檔案:
發現其中deny(拒絕),以及一個檔案,嘗試這查看這個/etc/ftpusers這個檔案:
對了,問題就在這,不允許訪問ftp的列表中竟然有root,然後將root刪除掉之後重新登陸,已經能夠登陸成功了:
而且還可以通過PAM給ftp配置虛擬使用者。這篇文章關於vsftpd的介紹很全面:Vsftpd,其中也有提到上述root使用者的問題,可惜是在解決之後才發現的,不然能剩下不少時間。
使用FileZilla傳輸檔案。
既然解決了root登陸的問題,那麼接下來就開始使用vsftpd了,串連ftp的用戶端使用的是FileZilla。
此時已經能夠串連成功了,雙擊本地的檔案進行上傳,但是上傳檔案的時候卻又出現了問題:
發現傳輸失敗了,此時還需要配置一下/etc/vsftpd.conf的一些內容,將有關檔案傳輸配置開啟:
配置完成之後需要儲存,並且重啟vsftpd:
service vsftpd restart
重啟完成之後,此時就能夠正常的上傳和下載檔案了。