OpenSSH SFTP:chroot 用户可以访问其他 chroot 用户的文件

OpenSSH SFTP:chroot 用户可以访问其他 chroot 用户的文件

决定完全重新措辞该问题,以便不必提出新的问题。

我目前使用 OpenSSH 的 SFTP 功能设置了一个 SFTP 服务器。我的所有用户都已 chroot,一切正常。

我现在最需要的是让一个非 root 用户(因为这个用户不能拥有任何真正的 SSH 权限!)能够访问所有其他用户的 chrooted 目录。这个用户的工作是偶尔获取所有上传的文档。

目前的目录结构如下:

/家|_ /家/用户1 |_ /家/用户2 |_ /家/用户3

将 ChrootDirectory 设置为 /home/%u

用户“adminuser”应该有权访问 user1、user2 和 user3 的目录,但无权访问 /home,或者至少不能访问 /home 以外的任何目录。

奖励积分谁能告诉我如何让用户在 /home/%u 内写入,而不必在他们自己拥有的目录中创建新目录,而不是像 /home/%u 那样以 root 身份进行写入(openssh chroot 先决条件)。

答案1

创建一个新的主目录,例如 /chroothome。

让所有用户的主目录位于该 chroothome 内。

chroot 管理员用户到 /chroothome。

对于其他一切,只需使用文件系统权限。

至于您的“附加问题”,使用本机功能无法实现。chroot 用户无法写入根目录是设计上的安全机制。当然,您始终可以修改源代码。

不过,我怀疑您可以将用户的主目录指定为 /user1,并将登录时的工作目录设为他们可以写入的目录。

答案2

在您的 /etc/ssh/sshd_config 中添加以下行:

Subsystem sftp internal-sftp

Match group SFTP-users
     ChrootDirectory /home/%u
     X11Forwarding no
     AllowTcpForwarding no
     ForceCommand internal-sftp

然后更改用户主目录的所有者

# chown root.root /home/user
# usermod -d / user
# adduser user SFTP-users

重新启动 ssh 服务器守护进程

#/etc/init.d/sshd restart

答案3

1°) sshd 检查主目录是否由登录的用户拥有。 2°) 如果你使用 chroot,sshd 将检查主目录下的每个父目录是否由 root 拥有(http://www.tenshu.net/archives/2008/10/09/openssh-51-chrootdirectory-permissions-issue/

如果你想 chroot 一个用户并让他读取其他用户的 chroot,那么这个用户的 home 必须是这些用户 chroot 的父目录。因此你将违反前两个规则之一。

据我所知,唯一的解决办法就是修补 sshd :-)

相关内容