SFTP - 允许用户仅上传到 www

SFTP - 允许用户仅上传到 www

Ubuntu 服务器 12.04

我需要允许用户仅offlineuser将文件上传到var/www/mysite/web/目录。此目录既是站点根目录,也是上传位置(旧设置)。

在我的/etc/ssh/sshd_config档案中:

注释掉以下内容后,它们可以上传到任何地方。一旦我取消注释,它们就根本无法连接。

AllowUsers offlineuser ubuntu

Subsystem       sftp    internal-sftp

Match Group sftponly
        ChrootDirectory /var/www/mysite/web/%u       
        ForceCommand internal-sftp
        PasswordAuthentication no
        X11Forwarding no
        AllowTcpForwarding no

offlineuser 是 sftponly 组的成员

摘自:Chroot SFTP 连接OpenSSH SFTP chroot() 与 ChrootDirectory

更新1

:pam_unix(sshd:session): session opened for user offlineuser by (uid=0)

: fatal: bad ownership or modes for chroot directory component "/var/www/mysite/"

: pam_unix(sshd:session): session closed for user offlineuser

所以,这很清楚,但我真的必须将目录 chown 给 offlineuser 吗?如果 www-data 想要写入它(这很可能?),这不会引起问题吗?

答案1

来自sshd_config 手册页

指定在认证后 chroot(2) 到的目录的路径名。路径名的所有组件都必须是 root 拥有的目录,且任何其他用户或组都无法写入。chroot 后,sshd(8) 将工作目录更改为用户的主目录。

似乎所有父目录都必须只能以 root 身份写入,即使对于 SFTP 也是如此。如果这不可能,我建议将目录移到其他地方(例如/home/web/offlineuser),然后将其符号链接/绑定安装到位。

答案2

如果你将 chroot 目录更改为

ChrootDirectory /var/www/mysite/web/

然后给用户一个主目录/测试用户密码文件 /etc/passwd那么你可以/var/www/我的网站/web/正确归 root 所有,并且在/var/www/mysite/web/测试用户可以由 testuser 拥有并写入。

相关内容