![从主网站 (SFTP) 进入子目录的 Chroot](https://linux22.com/image/719500/%E4%BB%8E%E4%B8%BB%E7%BD%91%E7%AB%99%20(SFTP)%20%E8%BF%9B%E5%85%A5%E5%AD%90%E7%9B%AE%E5%BD%95%E7%9A%84%20Chroot.png)
在 Debian apache2 服务器上,我试图授予对网站树子目录的访问权限(网站主目录:/主页/网站/public_html/,仅特定用户需要访问权限:/主页/网站/public_html/精品/模块/sftpwkmodules
因此主网站用户可以访问所有树 (userweb)。
但我需要用户访问权限sfk模块到树内的子目录,但它不起作用。
我创建了用户sfk模块和组sftpwk模块。
我将这些行设置为sshd_配置文件:
Match group sftpwkmodules
ChrootDirectory /home/website/public_html/boutique/modules/wkmanagesuppliers
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no
但当我连接到安全FTP对于此用户,这是不允许的。在日志中,似乎存在致命的所有权问题:chroot 目录组件“/home/website/public_html/”的所有权或模式错误。
但我无法更改所有树的所有权,而只是让该用户访问子目录。有没有办法让它工作?
答案1
在更改权限之前,请务必考虑您的 Web 服务器必须至少具有对文件和目录的读取权限。此外,用户 sfkmodules 创建的任何文件/目录都将归该用户所有,并且根据您的 umask,Web 服务器可能无法读取这些文件/目录。
可以考虑的一个解决方案是将用户 chroot 到 webroot 之外的自己的目录中,并想出某种监视程序来检测文件何时被删除,并将这些文件移动到 webroot 中。这样,您就可以控制所有权和权限。
PERL 和 cron 是您在这一努力中的朋友。
答案2
创建一个组,将所需用户以及您希望其具有访问权限的任何其他用户添加到该组并分配所需的权限。这次不要使用 chroot。
下面的命令适用于 CentOS,但您可以明白它的意思。
sudo groupadd groupname
sudo usermod -a -G groupname admin
sudo usermod -a -G groupname user1
sudo chown -R admin:groupname /home/website/public_html/boutique/modules/wkmanagesuppliers