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
指定在认证后 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 拥有并写入。