【发布时间】:2015-05-10 02:10:36
【问题描述】:
我在 Ubuntu Server 14.04 上运行 Apache2 + userdir。用户通过 AD 验证,可以通过 SSH 成功登录到该服务器。每个用户$HOME 都拥有700 权限,不允许用户更改和读取其他用户的文件。
目录 /home/public_html 归 Apache (www-data:www-data) 所有,并拥有 775 权限,因此每个用户(www-data 组的成员)都可以在他/她的用户名下的 /home/public_html 中创建自己的子目录并创建符号在他/她的$HOME 中链接到它。以下是用户名jdoe43 的示例用户示例:
-
/home/Domain/jdoe43是 $HOME 目录(权限为 700) -
/home/public_html/jdoe43是用户jdoe43的public_html目录,符号链接到/home/Domain/jdoe43/public_html
UserDir 指令设置为/home/public_html。 userdir.conf 的其余部分默认为 Ubuntu 安装,下面列出以供参考:
<IfModule mod_userdir.c>
UserDir /home/public_html
UserDir disabled root
<Directory /home/public_html/*>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
</Directory>
</IfModule>
我期待找到合适的权限集允许
- Apache 进程访问
/home/public_html/*中的文件 - 用户可以完全控制自己的
public_html目录
同时禁止
- 一个用户查看/修改另一个用户的 $HOME 目录的内容
- 用户查看/修改位于
/home/public_html/中的另一个用户的public_html目录的内容
我尝试使用不同的权限集的所有结果要么是 Apache 无法访问用户的 public_html,要么是用户至少拥有对其他用户的 $HOME 或 public_html 的读取权限。
我发现有几篇帖子建议使用 selinux 并配置文件系统以通过权限拒绝访问其他用户的目录(就像我对$HOME 所做的那样)将其设置为700),同时授予 Apache 进程(通过selinux)访问/home/public_html 及其所有子目录。我还发现一些资源指出,最近版本的 Ubuntu 中的 selinux 已被 apparmor 取代,因此,由于我在这项技术方面的经验有限,我决定推迟对其实施的任何行动。
非常感谢任何建议/建议。谢谢。
【问题讨论】:
-
Ubuntu 或 serverexchange 是回答这个问题的最佳场所。
标签: apache ubuntu-14.04 user-permissions selinux public-html