在 Ubuntu 上创建受限用户

在 Ubuntu 上创建受限用户

我需要向某些用户授予访客 SSH 访问权限,以便他们查看我们的服务器。他可以:

  • 仅访问 /opt/www/ 文件夹(及其子文件夹)
  • 可以列出文件夹
  • 但无法读取文件内容
  • 无法编辑/创建文件

如何正确地做到这一点?

答案1

用一个chroot获得第一个合适的文件权限和/或访问控制列表(访问控制列表s)实现第二个目标。

答案2

作为处理问题的文件权限部分的部分答案:

您可以设置以下 ACL,以便某个用户对所有目录具有读取和执行权限(需要遍历和列出内容),但没有文件权限。他们将无法看到文件存在,但无法列出文件的内容。

find /opt/www/ -type d -exec setfacl -m u:somebody:rX {} \;
find /opt/www/ -type f -exec setfacl -m u:somebody:--- {} \;

不幸的是,这只是一次性修复。下次有人添加文件时,它将没有正确的权限。您希望目录的默认权限是读取和执行,而文件的默认权限是 --- 对于某个用户。

据我所知,您不能对目录和文件设置不同的默认权限。您可以使用 rX 为某个用户设置默认 ACL,这将授予他们对所有内容的读取权限以及对目录的执行权限,但这也会授予他们对新创建文件的读取权限。

我想你可以做一些真正黑客的事情,比如设置一个 cron 作业来每 5 分钟设置一次这些 ACL。

也可能 MAC 系统(例如 SELinux)可以解决这个问题,但我不确定。我对它们的经验很少。

[更新]

这里有一篇详细介绍为 ssh 用户设置 chroot 的文章。

http://allanfeid.com/content/creating-chroot-jail-ssh-access

一旦您拥有可运行的 chroot 设置,您将需要使用 mount 命令的 bind 选项将 /opt/www 目录结构挂载到 chroot 中。

mount --bind /opt/www /some/path/to/chroot/dir/

相关内容