如何将 sftp 仅限用户限制在 chroot 目录内的特定文件夹中

如何将 sftp 仅限用户限制在 chroot 目录内的特定文件夹中

我知道这个问题有不同的版本。但我试图为每个用户提供 chroot 目录内的文件夹,并且他/她不应该能够在指定的文件夹之外导航。

我有一个云端的 Red Hat 7.1 Linux 机器。我需要的是:

  • 创建组 exchangefiles
  • 限制组为 SFTP
  • 我有多个用户 Legacy1、Legacy2、Legacy3
    • 为每个用户创建用户/密码
    • 为每个用户在 /exchangefolder 下创建文件夹
    • 限制用户只能访问指定文件夹(不能访问文件夹外的内容)。例如
      • Legacy1 用户只能通过 SFTP 连接到 /exchangefolder/Legacy1
      • Legacy2 用户只能通过 SFTP 连接到 /exchangefolder/Legacy2

此后,每当我有新用户时,我需要做的就是将其添加到此组(而不是其他组),并授予其访问 /exchangefolder 下文件夹的权限

我使用了“中提到的说明”https://passingcuriosity.com/2014/openssh-restrict-to-sftp-chroot/然后修改“/etc/ssh/sshd_config”,添加

Match Group exchangefiles
# Force the connection to use the built-in SFTP support.
ForceCommand internal-sftp 
# Chroot the connection into the specified directory.
#ChrootDirectory /home/exchangefiles/%u
#ChrootDirectory /home/exchangefiles
*ChrootDirectory %h*
# Disable network tunneling
PermitTunnel no
# Disable authentication agent forwarding.
AllowAgentForwarding no
# Disable TCP connection forwarding.
AllowTcpForwarding no
# Disable X11 remote desktop forwarding.
X11Forwarding no

创建

/home/exchangefiles
$ ls -ltr
total 16
drwxrwxr-x 2 root exchangefiles 4096 Jul 11 11:12 files
drwxrwxr-x 2 root exchangefiles 4096 Jul 11 15:31 sftptest2
drwxrwxr-x 3 root exchangefiles 4096 Jul 11 16:16 sftptest1
drwxrwxr-x 3 root exchangefiles 4096 Jul 11 18:32 sftptest3

以及其下方的文件夹结构。

我按照上面的链接创建了用户。但随后我尝试在 jail 结构中为每个用户设置主目录。例如,USER sftptest1 将有一个主目录

/home/exchangefiles/sftptest1

问题是我不能使用 SFTP,除非我改变

ChrootDirectory %h

ChrootDirectory /home/exchangefiles

这违背了我为每个用户创建单独文件夹的目的(有点像监狱中的监狱)

这是可行的吗?最好的方法是什么?

答案1

根据您的描述,我感觉您似乎希望为每个用户提供单独的 chroot 目录:ChrootDirectory /home/exchangefiles/%u

相关内容