我已阅读并遵循了几个使用chroot
设置sftp
的初始目录的问题和教程 。 我拥有chroot
目录的正确权限和所有权。 我可以让新用户login,但是他们无法将文件传输到应该拥有的文件夹。
我想chroot
sftpbackups
组的成员。 在我的sshd_config
文件中,我有以下。
Subsystem sftp internal-sftp Match Group sftpbackups ChrootDirectory %h X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
首先,我创build了一个未添加到sftpbackups
组中的用户testuser
。 主目录是/home/testuser/
/home/testuser/backups/
,我想通过sftp使用子目录/home/testuser/backups/
。 我可以使用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。
我在博客上find了答案。 我们需要告诉SELinux我们想通过SFTP将file upload到chroot。 它是默认只读的。
setsebool -P ssh_chroot_rw_homedirs on