
我有一个运行debian操作系统的VPS,并希望在其上创build用户帐户。
我想这样,当用户使用sftplogin时,var中的所有内容都显示为他们的主目录,并且不能从中删除。
例如,当用户3login时,他们可以访问var(读,写,执行)中的所有内容,但不能查看(cd)user1或user2的个人内容。
我怎么去做这个?
我想我必须在chroot这样做,但我不知道这是如何工作的。
谢谢
人们在使用chroot的SFTP时遇到的第一个问题是OpenSSH默认情况下要求root拥有指定用户的chroot目录的整个path。 换句话说,如果你想把某个用户切换到/ home / someone,/必须由root拥有,并且权限不能超过0755,那么/ home必须由root拥有,权限不能超过0755,也许最令人惊讶的是, / home / someone必须由root拥有,并且拥有不超过0755的权限。在你的情况下,你想将chroot人变成/ var(我甚至不会问),所以你避免了这个权限问题,但是在其他不可避免的情况下,您可能需要考虑mount --bind 。
至于实际的chroot,你有两个select如何去做:按组或用户。 无论哪种情况,您都将编辑sshd_config文件。 对于整个组来说,它看起来像:
Match group sftponly ForceCommand internal-sftp ChrootDirectory /var AllowTcpForwarding no
对于每个用户的configuration,它只会是:
Match user sftpdude ForceCommand internal-sftp ChrootDirectory /var AllowTcpForwarding no
请注意,在OpenSSH版本5左右之前,不支持internal-sftp,因此,如果您无法访问v5软件包,则可能需要编译OpenSSH的自定义副本。
如果您chmod 700每个用户目录只有目录所有者将能够访问该目录的内容。
即chmod 700 /home/duke/aa/servers/user2将阻止user2(和root)以外的任何用户访问它。
当然,user2需要是/home/duke/aa/servers/user2的所有者来访问他自己的文件。
根据您使用的FTP服务器应该是相对容易的。 在Debian中,proftpd和vsftpd都支持chroot作为选项。 ProFTPd文档在这里 。
对于SSH / SFTP请看http://www.debian-administration.org/articles/590