1. 程式人生 > >菜鳥Ubuntu下搭建FTP服務——vsftpd2.3.5

菜鳥Ubuntu下搭建FTP服務——vsftpd2.3.5

今天試了一下在Ubuntu下搭建FTP,在這裡與大家分享一下。vsftpd是一款在Linux發行版中最受推崇的FTP伺服器程式。特點是小巧輕快,安全易用,下面是vsftpd+pam搭建的原理圖。vsftpd藉助PAM認證工具來幫忙認證,我們的本地使用者登入ftp也是需要PAM來幫忙的。安裝vsftpd的時候,它會有/etc/pam.d/目錄裡生成一個認證的配置檔案:vsftpd ,而之前的vsftpd.conf裡的選項 pam_service_name=vsftpd 指的正是PAM使用/etc/pam.d/下的vsftpd配置檔案來認證。強迫症啊,我只是想找一張圖放上去……

Ubuntu下搭建FTP服務

1、安裝vsftpd

sudo apt-get install vsftpd

安裝完會自動生成ftp使用者,資料夾在srv下。

#sudo gedit /etc/vsftpd.conf

設定:

local_enable=YES

允許本地使用者訪問後,重啟ftp服務

#sudo /etc/init.d/vsftpd restart
#ftp localhost 用自己的ubuntu帳號可以進行訪問
#sudo /etc/init.d/vsftpd start     開關ftp服務
#sudo /etc/init.d/vsftpd stop

下面是配置檔案vsftpd.conf預設的一部分,其他雖然是英文基本都能看懂(我六級還沒過呢),可以根據自己的需要更改:

1
2
3
4
5
6
listen=YES               vsftpd將以獨立模式執行
anonymous_enable=YES      是否允許匿名登陸
dirmessage_enable=YES    歡迎資訊
use_localtime=YES        是否使用本地時間,預設是使用GMT時間
xferlog_enable=YES       讓系統自動維護上傳和下載的日誌檔案,預設情況該日誌檔案為/var/log/vsftpd.log
connect_from_port_20=YES     預設埠

注意點:
1、如果跟我一樣是在區域網下測試FTP服務的,注意區域網下連線ftp服務應該用內網的IP。本屌傻不拉及地用外網IP測試好久….
2、如果在別的機器上進行連線的時候,出現如下錯誤:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
意思是不能使用chroot限制可寫的根目錄。
chmod a-w /srv/ftp 即可解決,這是vsftp新版本加入的
上面的基礎上稍微改下設定再設一個密碼已經可以實現一般的功能了

進階:

建立虛擬使用者,參照(搭建同時支援匿名、本地、虛擬使用者的ftp伺服器)但是在vsftpd2.3.5版本一些地方不一樣,我這裡整理了一下,我假設你已經完全按照連結文章裡一樣做了
然後你用別的電腦登陸ftp時,應該會出現上面提到的一個錯誤:

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

於是我們需要把新建的stu,teacher,admin資料夾的寫的許可權去掉,但是一旦寫的許可權去掉了,還怎麼上傳檔案?我當時糾結了好久,終於還是想到了方法,再建一層目錄不就好了,vsftpd只是要求使用者根目錄不可寫而已!
解決辦法:我們在上述每個資料夾下面再新建一個資料夾,比如在stu下

#sudo mkdir stu

同樣需要改變資料夾屬主,否則登陸後是無法看到的(不過好像那篇文章裡已經做了),這樣就解決了問題,但是每次登陸ftp都要再點進一個目錄有點煩。

#sudo chown guest:guest -R stu

如果還出現以下問題:

500 OOPS: bad bool value in config file for: write_enable Login failed.

或是類似的錯誤,出現這種情況的原因就是write_enable=YES或者類似的語句YES後面多了一個空格,檢查一下就好了。

500 OOPS: cannot change directory:

這是selinux的問題,輸入以下命令就可以解決:

#setsebool ftpd_disable_trans 1
#service vsftpd restart

我怎麼覺得這頁面這難看呢!黃色背景好像跟什麼都不搭…