我在几个设置中都遇到过这个问题,我不确定如何处理它。
起初,全部/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 好得多)