在使用apache2 PHP的Gentoo 3.2.12服务器上,有几个网站正在运行:
/www
/website1
/website2
...etc
apache用户应具有对所有网站的只读访问权限.每个网站中还有一些文件夹,其中apache应具有读写访问权限(上传文件夹等).
有几个人在这些网站上工作.每个人都应该对他们所处理的网站具有读写权限,而不是其他人.此外,他们应该能够设置权限(在他们的网站内),以便apache可以写入一些文件夹(好吧,如果他们创建一个新的上传文件夹或其他东西).
其他用户根本不应该访问/ www.
可以这样做,怎么做?
(PS.另外……因为这些人可以上传PHP脚本,然后在Apache的上下文中执行,我猜他们也可以间接访问其他网站……是否有可能确保这一点?我不能想办法,但谁知道…)
解决方法:
一种方法是:
>为每个站点组成一个组,让该组中的人员使用umask 0002,这样他们创建的文件就可以读取/写入组,默认情况下可以读取.
> chmod a-rwx每个站点的根目录,以防止允许组外的人访问.
>为文件系统启用ACL,并设置setfacl -m user:apache:rx除了其他权限外,还授予对apache用户的读访问权限.
至于apache进程创建的文件:
>只要创建世界可读的组,就可以为相关组读取由apache用户创建的文件.
>只要它们位于组可写目录中,就可以删除文件.
>如果这还不够,您可以允许您的用户sudo到apache用户.也许只是为了执行特定的命令,例如使用ACL添加组写入权限.
但正如您所说,如果用户可以像apache用户一样运行任意脚本,则可以规避所有读取限制.为了解决这个问题,您可以尝试将一个站点的脚本作为特定用户在相应的组中执行.我相信有一种方法可以使用mod_fcgid来设置它.否则apache [suexec]和PHP [cgi]可能适合你.
为了获得更好的隔离,您必须拥有多个apache进程,以不同的用户身份运行,甚至可能在chrooted到不同的目录.或者在不同的OpenVZ单元,不同的Xen domU或不同的硬件上.正如您所看到的,存在许多不同的隔离级别,每个隔离级别都提供比以前更好的隔离级别,但代价是资源需求.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。