我需要向某些用户授予访客 SSH 访问权限,以便他们查看我们的服务器。他可以:
- 仅访问 /opt/www/ 文件夹(及其子文件夹)
- 可以列出文件夹
- 但无法读取文件内容
- 无法编辑/创建文件
如何正确地做到这一点?
答案1
答案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/