vsftpd:ECONNREFUSED和“allow_writeable_chroot = YES”

当设置vsftpd我被困住了。 当我没有写权限的情况下离开ftpuser的主目录时,我可以login,尽pipe实际上我不能写(当然)。 当我添加写入权限时,我得到类似的东西

cannot change to directory with write permissions if user is chrooted 

然后我补充说

 allow_writeable_chroot=YES 

到vsftpd.conf。 但现在我明白了

 ECONNREFUSED - Connection refused by serverss 

我搞不清楚了。 我究竟做错了什么?

这里是我的configuration:

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=YESconfiguration选项不可用(它是在vsftpd版本3以后添加的)。

正如其他答案所述,您可以在子文件夹上创build写入权限,但将chroot文件夹(以及隐藏文件)保持为只读。

在我的实现中,你可以在chroot中创build另一个/ home / username文件夹。 这样,连接到FTP服务器将对于chroot默认进入用户的主目录。

在我的用户帐户创build脚本中,这是如何完成的(所有命令以sudo的forms运行):

 chown root:root /home/$username mkdir -p /home/$username/home/$username chown $username:$username /home/$username/home/$username 

然后,当用户login到FTP服务器,他们有一个新的家庭文件夹相对于他们的chroot。 他们拥有这个文件夹,他们可以在文件夹中进行更改。 可能需要其他configuration才能将其设置为其默认login文件夹(passwd?); 当用户点击他们正在使用的任何ftp客户端的“home”button时,它将把它们带到这个文件夹中。

我解决了这个问题,通过给用户没有写权限的根目录,但build立具有写权限的子文件夹,以便他仍然能够上传文件。 不是进入根目录,而是进入子文件夹。 不是很好,但它的作品!