给Apache服务器上的DocumentRoot写入权限

我已经在我的mac工作站上运行了apache(OS X 10.7,带有预装的apache副本),我们的web应用程序需要对文件系统某些部分的写入权限(通常只是一个tmp目录,但有时候更多比起那个来说)。

我们有(成千上万)客户端,我希望能够快速获取任何网站代码的副本,并且“只是工作”,但是我总是需要手动修改特定目录的unix权限,网站脱离了源代码pipe理(目录列表因客户端而异,因为它多年来一直在改变)。

由于它是一个开发服务器,从一般的互联网防火墙,我想给apache / php写入整个DocumentRoot的访问权限。 我怎样才能做到这一点?

我在DocumentRoot上尝试了chmod 777 ,但是如果我在里面创build一个目录,权限仍然是755 (owner: me ,group: wheel )。

我认为应该有办法强制在DocumentRoot内创build的所有文件为777或775,与_www用户添加到wheel组?

我能够通过使用支持inheritance权限的ACL来解决这个问题:

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

现在,无论何时在DocumentRoot创build新的目录或源代码pipe理签出, _www用户都具有完全的读/写访问权限。

设置你的umask为000或002会给你你正在寻找的777或775创build权限。 问题是,你在任何地方创build的任何东西都会得到这些权 如果你确定775,就去做吧。 不,你可以像这样做一个mkwebdir命令:

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

甚至更好,如果你不介意在那里的sudo命令:

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

那么只需要:mkwebdir用户名

您可以尝试使用chown _www:wheel docroot,然后在设置umask之后使用chmod g+s