![在 OS X 服务器上强制文件和子目录权限](https://linux22.com/image/1395053/%E5%9C%A8%20OS%20X%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E5%BC%BA%E5%88%B6%E6%96%87%E4%BB%B6%E5%92%8C%E5%AD%90%E7%9B%AE%E5%BD%95%E6%9D%83%E9%99%90.png)
我们有一个 OS X 开发服务器,供五名开发人员使用,主要创建基于 Symfony2 的网站。在这五人中,只有我们两人属于 sudo 组,这意味着如果其他人遇到权限问题,他们无法仅通过 sudo 来解决。
我把我们所有人developers
(包括 Apache 用户)都放在一个组中,并将所有网站的根目录的组设置为developers
。我还添加了setgid
标志,因此在其中创建的任何子目录和文件都将继承该组。这很完美。
唯一的问题是 Symfony2 创建的任何文件或子目录(即缓存和日志文件)都没有与该组一起创建可写权限。我遇到过这个chmod +a
选项,并尝试设置一个 ACL 条目,如下所示:
sudo chmod -R +a "developers allow write" path/
这会在显示的权限列表末尾添加一个“+” ls
。遗憾的是,仍然无法使用组写入创建新文件。有人能告诉我我做错了什么吗?
答案1
这些新文件将不会具有该group write
设置,因为您所做的更改仅影响文件的 ACL。ACL 和 POSIX-Rights 是两个独立的东西!
在我看来你有两个选择:
- 更改 Web 服务器的 umask 或
- 将 ACL 设置为父文件夹,以便向下继承。由于首先检查 ACL,因此服务器应使用此处设置的任何读取或写入权限。
在我看来,第二种选择是更好的选择,因为在创建文件或文件夹的 PHP 应用程序中设置什么 umask 并不重要,因为它是在系统级别设置的。