我读过并关注过一些问题和教程使用 在chroot
中设置初始目录sftp
。我拥有正确的权限和目录所有权chroot
。我可以让新用户登录,但他们无法将文件传输到他们应该拥有的文件夹中。
例子
我想要chroot
该组的成员sftpbackups
。在我的sshd_config
文件中,我有以下内容。
Subsystem sftp internal-sftp
Match Group sftpbackups
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
首先,我创建了一个testuser
未添加到sftpbackups
组的用户。主目录是/home/testuser/
,并且有一个/home/testuser/backups/
我想通过 sftp 使用的子目录。我可以使用 sftp 将文件传输到我的backups
文件夹,例如
sftp> ls -l
drwxrwxrwx 2 testuser testuser 4096 Sep 25 00:09 backups
sftp> put a.txt backups
Uploading a.txt to /home/testuser/backups/a.txt
a.txt
testuser
当我加入该sftpbackups
组时,问题就出现了。
sftp> ls -l
drwxrwxrwx 2 1290 1291 4096 Sep 30 14:58 backups
sftp> put a.txt backups
Uploading a.txt to /backups/a.txt
remote open("/backups/a.txt"): Permission denied
我不确定为什么只有在我添加到组之后目录所有权才会改变sftpbackups
,我认为这与我无法传输文件的原因有关。
有什么想法可以继续前进吗?谢谢。服务器是 CentOS 6.8。
答案1
我在博客。我们需要告诉 SELinux 我们想要通过 SFTP 将文件上传到 chroot。默认情况下它是只读的。
setsebool -P ssh_chroot_rw_homedirs on