从 chroot 中排除单个用户

从 chroot 中排除单个用户

我在 CentOS 服务器上设置了 chroot (chroot 没有 shell 访问权限/严格为 sftp)。仅供参考,文件夹如下:

home/sftp_users/%u     (root:root 750)

home/sftp_users/%u/input (site_user:sftp_users 770)

home/sftp_users/%u/input/result (site_user:sftp_users 770)

在我的 sshd.conf 文件中,我有以下内容:

Subsystem       sftp    internal-sftp

Match Group webrecom_sftpusers
    ChrootDirectory /home/sftp_users/%u
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

这基本上就是我想要的。如果您注意到上面我没有让用户成为其文件夹的所有者home directory。这样做的原因是我不想让他们能够删除这些目录或更改它们的权限。否则,有人可能会在某个时候搞砸它。他们仍然可以访问,-r -w -e因为他们属于他们的组。虽然这基本上就是我想要的,但由于他们有写入权限,input他们可以删除result目录。我可以通过重新创建那个文件夹来解决这个问题in PHP。PHP 将在这些文件夹中查找要选择和运行的文件,然后返回有关它们的报告。

问题是它site_user属于自己的组site_user,而在 PHP 中,我只能将文件夹分配给用户所属的组。如果我添加,site_usersftp_users就会卡在 CHROOT 监狱中。

我想我可以让文件夹归site_usersite_user组所有,并将权限设置为 0777,但是:

  • 有没有其他方法可以防止用户更改权限/删除我忽略的这些目录
  • 有没有办法可以添加site_usersftp_users不将其放入监狱

答案1

Match 可以采用多个条件。尝试:

Match Group webrecom_sftpusers, User !site_user

相关内容