Ubuntu
vsftpd:ECONNREFUSED 與“allow_writeable_chroot=YES”
設置 vsftpd 時,我被困住了。當我在沒有寫權限的情況下離開 ftpuser 的主目錄時,我可以登錄並且一切都很好,儘管我不能寫(當然)。當我添加寫權限時,我得到類似
cannot change to directory with write permissions if user is chrooted
然後我加了
allow_writeable_chroot=YES
到 vsftpd.conf。但現在我明白了
ECONNREFUSED - Connection refused by serverss
我搞不清楚了。我究竟做錯了什麼?
這是我的配置:
ubuntu 12.04 - vsftpd 2.3.5 - etc/vsftpd.conf:
write_enable=YES dirmessage_enable=YES ftpd_banner="Welcome to my FTP service." local_enable=YES local_umask=022 chroot_local_user=YES allow_writeable_chroot=YES anonymous_enable=YES anon_upload_enable=YES anon_umask=022 anon_mkdir_write_enable=YES anon_other_write_enable=YES syslog_enable=YES connect_from_port_20=YES ascii_upload_enable=YES ascii_download_enable=YES pam_service_name=vsftpd listen=YES
我通過不授予使用者對其根目錄的寫入權限但建立具有寫入權限的子文件夾來解決問題,以便他仍然能夠上傳文件。不是進入根目錄,而是進入子文件夾。不是很好,但它有效!
在早期版本中,
allow_writeable_chroot=YES
配置選項不可用(它是在 vsftpd 版本 3 及更高版本中添加的)。正如另一個答案所述,您可以在子文件夾上創建寫權限,但將 chroot 文件夾(和其中的隱藏文件)保持為只讀。
在我的實現中,您可以在 chroot 中創建另一個 /home/username 文件夾。這樣,連接到 FTP 伺服器將預設進入相對於 chroot 的使用者主目錄。
在我的使用者帳戶創建腳本中,這是如何完成的(所有命令都以 sudo 執行):
chown root:root /home/$username mkdir -p /home/$username/home/$username chown $username:$username /home/$username/home/$username
然後,當使用者登錄到 ftp 伺服器時,他們有一個相對於他們的 chroot 的新主文件夾。他們擁有此文件夾,並且可以在文件夾內進行更改。可能需要其他配置才能將其設置為預設登錄文件夾(passwd?);當使用者在他們使用的任何 ftp 客戶端上點擊“首頁”按鈕時,它會將他們帶到此文件夾。