網上的文章好難懂啊。。只想要簡單粗暴,弄好能用就行啊,復雜的以后研究不行嗎。。。折騰好久,其實弄出來能用不就這么點內容嗎。。。
本文在Ubuntu Server 14.04 amd64系統測試。
**安裝ftp**
`sudo apt-get install vsftpd`
**配置vsftpd.conf**
`sudo nano /etc/vsftpd.conf`
~~~
#禁止匿名訪問
anonymous_enable=NO
#接受本地用戶
local_enable=YES
#允許上傳
write_enable=YES
#用戶只能訪問限制的目錄
chroot_local_user=YES
#設置固定目錄,在結尾添加。如果不添加這一行,各用戶對應自己的目錄,當然這個文件夾自己建
local_root=/home/ftp
~~~
看網上說加一行`pam_service_name=vsftpd`,我看我這個配置文件本來就有,就不管了。
**添加ftp用戶**
sudo useradd -d /home/ftp -M ftpusersudo passwd ftpuser
**調整文件夾權限**
這個是避免“500 OOPS: vsftpd: refusing to run with writable root inside chroot()”
`sudo chmod a-w /home/ftpsudo mkdir /home/ftp/data`
這樣登錄之后會看到data文件夾,雖然稍麻煩,原因不表了。。查資料這么辛酸已經不易。。
**改pam.d/vsftpd**
這時候直接用useradd的帳號登錄ftp會530 login incorrect
`sudo nano /etc/pam.d/vsftpd`
注釋掉
`#auth required pam_shells.so`
重啟vsftpd
`sudo service vsftpd restart`
這時就可以用剛才建的ftpuser這個用戶登錄ftp了,看到的是local_root設置的/home/ftp,并且限制在該目錄。
可以在瀏覽器用`ftp://xxx.xxx.xxx.xxx`訪問,也可以用ftp軟件比如flashFXP,密碼就是ftpuser的密碼。
**關于用戶訪問文件夾限制**
由
* chroot_local_user
* chroot_list_enable
* chroot_list_file
這三個文件控制,轉別人的一段話:
首先,
chroot_list_enable好理解,就是:是否啟用chroot_list_file配置的文件,如果為YES表示chroot_list_file配置的文件生效,否則不生效;
第二,chroot_list_file也簡單,配置了一個文件路徑,默認是`/etc/vsftpd.chroot_list`,該文件中會填入一些賬戶名稱。但是這些賬戶的意義不是固定的,是跟配置項chroot_local_user有關的。后一條中說明
;
第三,chroot_local_user為YES表示所有用戶都**不能**切換到主目錄之外其他目錄,但是!除了chroot_list_file配置的文件列出的用戶。chroot_local_user為NO表示所有用戶都**能**切換到主目錄之外其他目錄,但是!除了chroot_list_file配置的文件列出的用戶。也可以理解為,chroot_list_file列出的“例外情況”的用戶。
如果客戶端登錄時候提示“以pasv模式連接失敗”
編輯`/etc/vsftpd.conf`
最后添加
`pasv_promiscuous=YES`
然后再重啟vsftpd服務。