在 Debian 8 上,我使用 jailkit 和 userdir mod 在 jailed 环境中运行 apache2。在当前的 jail 设置中,用户可以导航到另一个用户目录,即
/home/jail/home/anotheruser
并查看其中的文件,但可以浏览文件夹
我尝试使用以下方法将用户限制在他们的主文件夹中
chmod 0700 /home/jail/home/*
现在,当我尝试导航到另一个用户目录时,我得到了
Permission denied
但现在当我浏览用户网站时,我得到了
You don't have permission to access / on this server.
在我执行 chmod 之前,它有效。那么我如何将用户限制在他们的家中,但仍允许他们浏览网站?
我尝试将 www-data 添加到用户组
groups test
test : test
usermod -a -G www-data test
groups test
test : test www-data
但仍然被拒绝许可。
答案1
我不太清楚您当前的环境是如何设置的,但您似乎混淆了 chroot(“jailkit”)和权限。
虽然您的路径和对 jailkit 的引用表明它是 Unix 或 Linux 系统,但您没有告诉我们有关其运行的操作系统的任何信息。
人们通常将权限视为阻止访问的一种方式,但实际上应该将其视为以定义的方式共享访问权限的一种手段。因此...
许多此类系统会为每个用户创建一个新组(并将其设置为默认组)。如果不是这种情况,那么添加这些组应该很简单。一旦您拥有这些组并将它们用作每个用户的默认组,那么您只需要将 Web 服务器的 uid 添加到每个组,然后将目录权限更新为 drwxr-x--- 并将文件访问权限更新为 -rw?r-?--- 以允许 Web 服务器读取文件但不允许其他用户读取。您应该相应地设置用户的 umask。但是:
- 这可能会破坏现有的权限模型如果你有
- 如果你允许用户在 Web 服务器中运行脚本(Perl、bash、PHP 等),那么他们很容易绕过读取权限的限制
- 如果你只允许静态内容(在没有 HTTP 身份验证的情况下),其他用户可以从 Web 服务器检索文件