安裝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
#設(shè)置固定目錄,在結(jié)尾添加。如果不添加這一行,各用戶對應(yīng)自己的目錄,當(dāng)然這個文件夾自己建
local_root=/home/ftp
看網(wǎng)上說加一行“pam_service_name=vsftpd”,我看我這個配置文件本來就有,就不管了。
添加ftp用戶
sudo useradd -d /home/ftp -M ftpuser
sudo passwd ftpuser
調(diào)整文件夾權(quán)限
這個是避免“500 OOPS: vsftpd: refusing to run with writable root inside chroot()”
sudo chmod a-w /home/ftp
sudo mkdir /home/ftp/data
這樣登錄之后會看到data文件夾,雖然稍麻煩,原因不表了。。查資料這么辛酸已經(jīng)不易。。
改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設(shè)置的/home/ftp,并且限制在該目錄。
可以在瀏覽器用ftp://xxx.xxx.xxx.xxx訪問,也可以用ftp軟件比如flashFXP,密碼就是ftpuser的密碼。
關(guān)于用戶訪問文件夾限制
由chroot_local_user、chroot_list_enable、chroot_list_file這三個文件控制,轉(zhuǎn)別人的一段話:
首先,chroot_list_enable好理解,就是:是否啟用chroot_list_file配置的文件,如果為YES表示chroot_list_file配置的文件生效,否則不生效;
第二,chroot_list_file也簡單,配置了一個文件路徑,默認是/etc/vsftpd.chroot_list,該文件中會填入一些賬戶名稱。但是這些賬戶的意義不是固定的,是跟配置項chroot_local_user有關(guān)的。后一條中說明;
第三,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服務(wù)。
vsftpd 530 Permission denied錯誤與530 Login incorrect
在linux上搭建完ftp服務(wù)器后,用戶登錄vsftpd出現(xiàn)530 Login incorrect錯誤與530 Permission denied錯誤。 530 Permission denied 原因是/etc/vsftpd/vsftpd.conf里userlist_enable=YES /etc/vsftpd/user_list含有root名單
2種解決辦法:
1.userlist_enable=NO 將root從user_list中去掉
530 Login incorrect錯誤 將root從/etc/vsftpdftpusers中去掉。
2.如果是默認安裝vsftpd的話,以下是一些文件的位置約定:
/usr/sbin/vsftpd ---- VSFTPD的主程序 /etc/rc.d/init.d/vsftpd ---- 啟動腳本 /etc/vsftpd/vsftpd.conf ---- 主配置文件 /etc/pam.d/vsftpd ---- PAM認證文件 /etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用戶列表文件 /etc/vsftpd.user_list ---- 禁止或允許使用VSFTPD的用戶列表文件 /var/ftp ---- 匿名用戶主目錄 /var/ftp/pub ---- 匿名用戶的下載目錄
如果要更改默認下載目錄,修改/etc/vsftpd/vsftpd.conf,加入如下三行: local_root=/ chroot_local_user=YES anon_root=/ local_root表示使用本地用戶登錄到ftp時的默認目錄 anon_root表示匿名用戶登錄到ftp時的默認目錄 上面的chroot_list_file是設(shè)定鎖定登陸用戶在其home目錄的列表,要在chroot_list_enable=YES情況下才生效。 另外,如luo_rc所述,最好不要設(shè)置默認目錄為/,使用建議使用mount --bind來掛載需要的目錄。