Ubuntu

vsftpd:ECONNREFUSED 與“allow_writeable_chroot=YES”

  • March 25, 2016

設置 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 客戶端上點擊“首頁”按鈕時,它會將他們帶到此文件夾。

引用自:https://serverfault.com/questions/399371