当设置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立具有写权限的子文件夹,以便他仍然能够上传文件。 不是进入根目录,而是进入子文件夹。 不是很好,但它的作品!