首先,假設你已經在Ubuntu上安裝好了LAMP環境,實作了Apache多使用者的虛拟主機設定。那麼現在,你就應該考慮使用者資料的上傳問題了,一般這些使用者都會選擇用ftp上傳的方式來管理自己的web内容,這就需要我們再為他們開設FTP服務。最簡便的方法就是使用Ubuntu自帶的FTP伺服器是vsftpd。
一、安裝vsftpd
Ubuntu安裝軟體倒不是件困難的事,輸入:
apt-get install vsftpd
如果提示沒找到vsftp軟體包,
修改 gedit /etc/apt/sources.list 或vi /etc/apt/sources.list, 在最後加入
deb http://ftp.us.debian.org/debian stable main contrib non-free
deb http://ftp.us.debian.org/debian-non-US stable/non-US main contrib non-free
deb http://ftp.us.debian.org/debian testing main contrib non-free
deb http://ftp.us.debian.org/debian-non-US testing/non-US main contrib non-free
deb http://ftp.us.debian.org/debian unstable main contrib non-free
deb http://ftp.us.debian.org/debian-non-US unstable/non-US main contrib non-free
最後執行 apt-get update 更新軟體庫
安裝了之後會在/home/下建立一個ftp目錄。這時候你可以試着通路下ftp://IP位址。應該可以看到一個空白内容的ftp空間。
預設設定下匿名使用者可以下載下傳,但不能寫入或是上傳
二、設定 vsftpd.conf檔案
現在我們要讓匿名使用者無法通路,并且得輸入linux上的使用者密碼後才能通路到他們自己目錄裡的内容。
首先找到設定vsftpd的檔案,位置在/etc/vsftpd.conf,修改之前最好先備份下這個檔案:
cp /etc/vsftpd.conf /etc/vsftpd.conf.old
然後可以改動了,下面是一些vsftpd設定參數說明:
#不讓匿名使用者使用
#anonymous_enable=YES
#本地使用者可用
local_enable=YES
#可用寫操作
write_enable=YES
#不需要顯示某目錄下檔案資訊
#dirmessage_enable=YES
#加點banner提示
ftpd_banner=Hello~~
#FTP伺服器最大承載使用者
max_clients=100
接下來,你會遇到兩個問題:
1、輸入使用者名密碼後顯示的位置是在使用者的根目錄下,而我們的WEB内容是在public_html目錄裡。
2、使用者可以跳到任何其他目錄,造成了不利的檔案共享局面。
要解決這兩個問題,我們還是繼續修改vsftpd.conf檔案對vsftpd進行設定:
#啟動chroot清單(Change root)
chroot_list_enable=YES
#指定清單位置(我這用的是預設位址)
chroot_list_file=/etc/vsftpd.chroot_list
接下來我們得在vsftpd.chroot_list上寫進去我們要限制哪些使用者,不讓他們“漂移”。在有使用者redbots,是以隻要sudo nano一下,往裡面寫就行了。
這樣我們已經解決第2個問題了,登陸的使用者隻能在它的使用者檔案夾裡活動,下面我們要更狠一點,讓他隻能在public_html裡活動。依然還是修改vsftpd.conf檔案。
#這句預設設定裡是沒有的,自己加。
user_config_dir=/etc/自己定義一個設定個别使用者用的檔案夾位址
根據自己設定的位址,建立一個相應的檔案夾,然後往裡面建立和使用者名相同的檔案,nano一下:
#本地使用者的根位址,假設使用者是redbots。
local_root=/home/redbots/public_html
最後,重新開機下vsftpd服務,就可以看到效果了,指令如下:
/etc/init.d/vsftpd restart