sftp 用户的 chroot

sftp 用户的 chroot

我遵循了互联网上的多个指南,了解如何限制用户,以便他无法更改/查看其主目录之外的文件。

所以我创建了一个用户,我们称他为 john,我还创建了一个名为 sftp 的组,这是他的主要组。我还将他的主目录更新为我希望他被监禁的目录。 (在这种情况下/var/www/)然后我添加了一些配置行/etc/ssh/sshd_config

Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcoForwarding no

没用过这个。 John 能够访问其主目录之外的目录。然后我尝试使其具体化。

Match User john
    ChrootDirectory /var/www
    ForceCommand internal-sftp
    AllowTCPForwarding no
    X11Forwarding no

也不起作用,约翰仍然可以访问所有文件。所以我什至尝试使用这两种配置,但都不起作用。

Johns shell/bin/bash虽然在一些指南中提到将其设置为/bin/falseor/bin/nologin但当然我无法与 Filezilla 连接。

发行版是 Ubuntu 14.04。

答案1

更改块中的下一行Match Group sftp

ChrootDirectory /var/www/%u

如果您在 /var/www 中创建的目录以用户命名作为目录名称,那么您将能够使用 chroot 到其 /var/www/user-directory 的多个用户。

您还需要检查权限,/var/www/user-name 目录必须具有 root 作为其用户和组,并且具有 755 权限。在该目录中,您需要创建几个目录或您想要的目录(例如输入和输出目录),这些目录应将用户作为所有者,并将组 sftp 作为组,我建议 700 权限或您认为合适的权限。之后,用户应该能够登录并访问目录,并且无法在根目录中写入任何内容,也无法超出 /var/www/user 树。

将 shell 设置为 /bin/false 或 /bin/nologin 将仅允许 sftp 连接,如果您只想进行 sftp 访问,这很有趣,否则用户将能够 ssh 到系统,而您可能不希望这样做。

编辑:顺便说一句,AllowTcoForwarding no块 sftp 中的行是错误的,请将其修改为正确的行(AllowTcpForwarding)以防这不仅仅是这里的拼写错误。

相关内容