授予 apache 对开发服务器上的 DocumentRoot 的写权限

授予 apache 对开发服务器上的 DocumentRoot 的写权限

我的 Mac 工作站(OS X 10.7,预装了 apache 副本)上运行着 apache,我们的 Web 应用程序需要对文件系统的某些部分具有写访问权限才能运行(通常只是一个 tmp 目录,但有时不止于此)。

我们有(确实)数千个客户,我希望能够快速获取任何网站代码的副本,并使其“正常工作”,但是在将客户的网站从源代码控制中拉出后,我总是需要手动修改特定目录的 unix 权限(目录列表因客户而异,因为它多年来一直在变化)。

由于它是开发服务器,与一般互联网隔离,因此我想授予 apache/php 对整个 DocumentRoot 的写入权限。我该怎么做?

我尝试chmod 777了 DocumentRoot,但如果我在其中创建一个目录,权限仍然是755(所有者:me,组:) wheel

我认为应该有一种方法可以强制在 DocumentRoot 内创建的所有文件为 777 或者 775,并将用户_www添加到wheel组中?

答案1

我可以通过使用支持继承权限的 ACL 来解决这个问题:

sudo chmod -R +a '_www allow read,write,delete,add_file,add_subdirectory,file_inherit,directory_inherit' /Library/WebServer/Documents

现在,每当我在中创建新目录或源代码控制签出时DocumentRoot_www用户都拥有完全的读/写访问权限。

答案2

将 umask 设置为 000 或 002 将为您提供所需的 777 或 775 创建权限。问题是,您在任何地方创建的任何东西都会获得这些权限。如果您对 775 满意,那就去做吧。否则,您可以像这样创建 mkwebdir 命令:

mkwebdir()
{
  umask 000;
  mkdir "$1";
  umask 022;
}

或者更好的是,如果你不介意在其中使用 sudo 命令:

mkwebdir()
{
  mkdir "$1" && sudo chown _www "$1"
}

然后执行:mkwebdir 用户名

答案3

您可以尝试使用chown _www:wheeldocroot,然后chmod g+s根据需要设置 umask。

相关内容