2015-05-10 132 views
0

我正在运行Apache2 + userdirUbuntu服务器14.04。用户通过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或与用户至少读取其他用户的访问$HOMEpublic_html

我发现了几个帖子建议使用SELinux的和配置文件系统拒绝访问其他用户的目录通过许可的方式(像我$HOME没有将其设置为700),并在同一时间授权 Apache进程(通过selinux)访问/home/public_html及其所有子目录。我还发现一些资源指出,在最近版本的Ubuntu中,selinux被替换为apparmor,所以,由于我在这项技术方面的经验有限,因此我决定推迟对其实施的任何移动。

任何建议/建议,非常感谢。谢谢。

+0

Ubuntu或serverexchange是这个问题的最佳场所。 –

回答

0

有可能是一个selinux布尔值,让你做这样的事情相对无痛。

ubuntu wiki将您发送到debian SELinux页面,确认它们使用与其他发行版相同的refpolicies(当然)。我刚刚检查了apache的策略,布尔值就在那里。 如果你已经有一个启用SELinux的Ubuntu的,你可以很容易地检查是否布尔与

getsebool httpd_enable_homedirs 

启用,并检查布尔真或假的(它默认为false)。

here所示,使的UserDir后,您需要启用布尔

setsebool -P httpd_enable_homedirs true 

而重新标记目录为每个用户

chcon -R -t httpd_sys_content_t /home/testuser/public_html 

需要注意的是在public_html目录UNIX权限仍是755或无论您需要为您的用户/组设置。

chown testuser:testuser /home/testuser/public_html 
chmod 755 /home/testuser/public_html 

如果你想要去SELinux的方式,你需要做什么;我不太了解AppArmor和其他替代方法,但正如你所说的,Ubuntu wiki对于selinux的支持并不是很清楚。

如果你有一些空闲时间,我建议在测试虚拟机上试试它,看看它是如何发展的。

希望这会有所帮助!

相关问题