Web服务器根目录的权限

Web服务器根目录的权限

我在几个设置中都遇到过这个问题,我不确定如何处理它。

起初,全部/var归 拥有root:root。显然我不希望 web 目录由 root 拥有,所以我这样做了chown apache:apache /var/www。然而,当某人ssh以 root 身份登录时,如果他们执行类似svn update或编辑文件之类的操作,则会将所有权更改回 root。

有没有什么办法解决这一问题?我听说过将某些东西与 suPhp 一起使用,但我不确定是否有必要。

答案1

笔记:对于您的情况,最好的方法是放弃更新的 root 权限并使用您的apache用户运行脚本:

 su apache -c "./update-script"

否则,请使用chmod g+s /var/www.默认情况下,在此目录中创建的新文件和子目录将与父目录共享相同的所有者/组。 (这会递归地传播。)

根据coreutils手册这是一个不可移植的 GNU 风格的扩展。这似乎只适用于组 ID,但我认为它应该足以处理这种一般性的问题。 (umask 002运行脚本时使用也可能有帮助。)

答案2

显然我不希望 web 目录由 root 拥有

为什么?您的安全模型是什么?

chown apache:apache /var/www

你的安全模型是什么鬼!!!???

当某人以 root 身份登录时

啊啊啊啊啊!

Stephane G 的回答很有意义,如果你不要使用 apache 用户。对于大多数安全模型,更明智的方法是设置一组用户对文件具有写访问权限,并设置组所有权和组粘性,在目录上执行和写入位,然后允许 Web 服务器 uid 访问为“其他” 。如果您必须具有可由 Web 服务器 uid 写入的特定目录/文件,请将这些目录/文件的用户设置为 Web 服务器 uid(但保持与其他地方相同的组)。

并且您永远不应该允许 root ssh 登录(AllowGroups/AllowUsers 白名单比拒绝特定用户/PermitRootLogin=no 好得多)

相关内容