我试图在我的服务器上build立一个上传目录,而且最难的时候是这样做的。 上传到该目录需要系统上的所有其他用户都可以访问,但是用于上传的用户帐户应该根本没有访问权限(除了上传之外),所以我正在根据上传用户帐户只有自己的目录。 由于策略考虑,我通过SSH使用FTP,并且我已经进行了以下设置:
上传目录:
/var/uploads/uploaduser/
(我使用这个,因为uploaduser帐户不是一个普通的帐户,不应该这样对待;但是,我很乐意接受关于如何去做这件事的其他build议。)
权限设置如下:
/var/ drwxr-xr-x 25 root root 4096 Mar 30 10:04 var/ /var/uploads drwxr-xr-x 3 root root 4096 Mar 23 12:22 uploads/ /var/uploads/uploaduser drwx---rx 3 root root 4096 Apr 4 10:14 uploaduser/
现在,当我使用FileZilla或任何其他客户端上传文件到uploaduser目录时,我得到了“权限被拒绝”的错误。 但是,如果我更改uploaduser目录的所有权或更改其权限,我得到此错误:
Couldn't read packet: Connection reset by peer
这似乎是一个“该死的,如果你做/该死的,如果你不”的情况。
我在/etc/ssh/sshd_config有以下设置:
Match user uploaduser ChrootDirectory /var/uploads/destiny/ AllowTcpForwarding no X11Forwarding no ForceCommand internal-sftp
我使用的是VSFTP,对于涉及FTP over SSH的所有其他应用程序,它都可以正常工作。
ETA:我使用Amazon EC2实例作为我的networking服务器,并运行Amazon Linux AMI。
我现在只是自己学习这个东西,并认为我刚刚得到了你来的驼峰。
首先,您的上传目录与您的ChrootDirectory不匹配。 我会认为这是一个错字。
有些事情我来学习:
现在使用ChrootDirectory …
ChrootDirectory内创build另一个名为content目录(例如)
/var/uploads/uploaduser/content 从我的理解…
ChrootDirectory
/home他们将能够看到所有的用户目录(尽pipe没有访问权限) 希望这可以帮助。 如果有人知道如何使监狱成为可写,我会很有兴趣知道!