Ubuntu sftp chroot jail 路径未被读取?

Ubuntu sftp chroot jail 路径未被读取?

我遇到了一个问题,我已经折腾了好几个小时了,但还是不明白发生了什么。我读了很多关于这个问题的指南,在 Ubuntu 上应该只需要 2 分钟的设置任务,但我仍然无法让它工作。

问题是:

我已经设置了正确的 sshd_config,至少我希望我做对了……

Subsystem sftp internal-sftp

Match Group sftpusers
ChrootDirectory /var/www
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp

/var /www 都具有 755 root:root 的权限。是的,我已经无数次重启了我的 ssh 服务。是的,我已经阅读了大约 30 篇关于此类内容的 stackoverflow 帖子,但从未发现任何与我的问题密切相关的内容。

现在我已经完成了先决条件,接下来是真正的问题:当我尝试使用 SFTP 连接时,我在身份验证日志中看到以下内容:

Nov  8 22:38:07 hidden_server_name sshd[7436]: Accepted password for wordpress_user from imagine_my_hp_address_here port 49508 ssh2
Nov  8 22:38:07 hidden_server_name sshd[7436]: pam_unix(sshd:session): session opened for user wordpress_user by (uid=0)
Nov  8 22:38:07 hidden_server_name systemd: pam_unix(systemd-user:session): session opened for user wordpress_user by (uid=0)
Nov  8 22:38:07 hidden_server_name systemd-logind[1462]: New session 241 of user wordpress_user.
Nov  8 22:38:07 hidden_server_name sshd[7481]: fatal: bad ownership or modes for chroot directory component "/"
Nov  8 22:38:07 hidden_server_name sshd[7436]: pam_unix(sshd:session): session closed for user wordpress_user
Nov  8 22:38:07 hidden_server_name systemd-logind[1462]: Removed session 241.

当然,“wordpress_user”是“sftpusers”组的成员,问题出在这一行:

Nov  8 22:38:07 hidden_server_name sshd[7481]: fatal: bad ownership or modes for chroot directory component "/"

为什么它要 chroot 到服务器的根目录,而它显然已设置为 /var/www?

甚至尝试多次将主目录更改为用户的各种内容。

请谁能帮我缓解一下头痛,好痛啊!:D

答案1

ChrootDirectory /var/www
...
bad ownership or modes for chroot directory component "/"

ChrootDirectory 选项要求 chroot 目录及其所有父目录属于根。从文档(强调添加):

Chroot目录
指定在认证后 chroot(2) 到的目录路径名。在会话启动时,sshd(8) 检查路径名的所有组件都是根拥有的目录,任何其他用户或组都无法写入. chroot 之后,sshd(8) 将工作目录更改为用户的主目录。

在您的例子中,ssh 服务器抱怨系统的根目录“/”。显然,根目录的权限不符合这些要求。

最简单的解决方法是将根目录的权限调整为 0755,所有者为 root。我知道的唯一替代方案是构建你自己的 SSH 服务器副本此项检查已禁用。

答案2

这是设计使然。

严格权限会强制您以 root 身份填充/var/www/目录,并将文件和子目录分配给您的用户或组。这不是最佳选择。

最好创建一个子目录,/var/www/让你的用户对其进行写入,而只留给/var/www/root 进行操作。

如果您的 Web 服务器上只有一个虚拟主机,那么这就是您可以执行的操作的一个示例。

sudo chown root:root /var/www/
sudo chmod u=rwx,g=rx,o=rx /var/www/

sudo mkdir /var/www/site1/
sudo chgrp sftponly /var/www/site1
sudo chmod u=rwx,g=rwxs,o=rx /var/www/site1/

在您的 SSH 服务器的配置文件中添加如下内容:

Match group sftponly
    ChrootDirectory /var/www/
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp -d site1

来源:重新加载此页面 chroot 目录“/var/www”的所有权或模式错误

相关内容