chroot 目录组件的所有权或模式不正确

chroot 目录组件的所有权或模式不正确

我创建了用户 MY_USER。将他的主目录设置为 /var/www/RESTRICTED_DIR,这是他应该被限制到的路径。然后我编辑了 sshd_config 并设置:

Match user MY_USER
  ChrootDirectory /var/www/RESTRICTED_DIR

然后我重启了 ssh。将 MY_USER 设为 RESTRICTED_DIR 的所有者(和组所有者),并将其 chmodded 为 755。我得到了

Accepted password for MY_USER
session opened for user MY_USER by (uid=0)
fatal: bad ownership or modes for chroot directory component "/var/www/RESTRICTED_DIR"
pam_unix(sshd:session): session closed for user MY_USER

如果我从 sshd_config 中删除了这两行,用户就可以成功登录。当然,它可以访问所有服务器。有什么问题?我甚至尝试将 RESTRICTED_DIR 更改为 root(因为我在某处读到有人通过这种方式解决了同样的问题)。但没成功。

答案1

这一man

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

我猜路径上的一个或多个目录不符合这些要求(我怀疑是www您的 Web 用户拥有或可写入的,而不是 root)。
返回并按照说明操作,确保满足上述要求粗斜体得到满足。

答案2

ChrootDirectory 目录必须由 root 拥有并具有 755 模式:

sudo chown root:root /var/www/RESTRICTED_DIR
sudo chmod 755 /var/www/RESTRICTED_DIR

好的,现在所有文件都放入/var/www/RESTRICTED_DIR必须由MY_USER,必须属于www-data组,并具有 775 模式以允许组权限,如下所示:

sudo usermod -a -G www-data MY_USER
sudo chown MY_USER:www-data /var/www/RESTRICTED_DIR/*
sudo chmod 775 -R /var/www/RESTRICTED_DIR/*

笔记:记住,如果您正在配置 apache,那么很好的做法是只允许访问 htdocs 文件夹。

答案3

今天经过一些故障排除后,我意识到 root 也必须能够到目录。

以下操作无效:

$ ls -ld /mnt/synology03/files/
dr-xr-xr-x 1 root root 156 Oct  8 20:10 /mnt/synology03/files/
$ ls -ld /mnt/synology03
drwxr-xr-x 7 root root 4096 Oct  1 21:26 /mnt/synology03
$ ls -ld /mnt
drwxr-xr-x 6 root root 4096 Feb  8 10:01 /mnt
$ ls -ld /
drwxr-xr-x 24 root root 4096 Jan 14 09:22 /

一旦我修复了这个问题,我的 chroot 就开始工作了。

$ sudo chmod 755 /mnt/synology03/files/
$ ls -ld /mnt/synology03/files/
drwxr-xr-x 1 root root 156 Oct  8 20:10 /mnt/synology03/files/

答案4

让它/a/b/c/CHROOT/stuff像这样工作:

  • a、、b和- 755cCHROOTroot:root
  • stuff- root:CHROOTED_USER_GROUP775

然后用户可以使用 sftp 登录并将文件上传到/stuff目录。

相关内容