如何为多个用户和多个网站设置安全权限?

在使用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或不同的硬件上.正如您所看到的,存在许多不同的隔离级别,每个隔离级别都提供比以前更好的隔离级别,但代价是资源需求.

上一篇:Linux用户、组管理


下一篇:linux-python3_5在PYTHON_TARGETS中无法在Gentoo中运行?