我userdir
在Ubuntu Server 14.04上运行 Apache2 + 。用户通过 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
是一个符号链接到public_html
的用户目录jdoe43
/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 目录的内容
- 用户查看/修改另一个用户
public_html
目录的内容/home/public_html/
我尝试使用不同权限集的所有操作最终都导致 Apache 无法访问用户的权限,public_html
或者用户至少拥有对其他用户$HOME
或public_html
.
我发现有几篇文章建议使用selinux并配置文件系统以通过权限拒绝访问其他用户的目录(就像我$HOME
通过将其设置为700
一样),同时授予Apache 进程(通过selinux
)访问/home/public_html
及其所有子目录。我还发现一些资源表明selinux
在最近的 Ubuntu 版本中被替换为支持 . apparmor
,因此,由于我在这项技术方面的经验有限,我决定推迟对其实施的任何行动。
任何建议/建议都将受到高度赞赏。谢谢你。