我知道这个问题有不同的版本。但我试图为每个用户提供 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
。