无法解释 ACL 行为

无法解释 ACL 行为

这就是情况:为网络开发人员提供服务器。有很多开发商。所有developers++PHPApache属于www组。有一个开发目录- development.

目标是development目录中的每个文件都具有755权限,并且每当任何开发人员创建、修改development目录中的文件时,文件仍将具有755.

所以我读了很多acl教程、指南和指南,但我仍然无法得到我想要的结果。

  1. 我的磁盘安装有acl
  2. 我有chown -R www:www development
  3. 添加chmod g+s development
  4. 我在目录上设置了一些acl规则development并得到了这个:

    $ getfacl development
    # file: development
    # owner: www
    # group: www
    # flags: -s-
    user::rwx
    user:www:rwx
    group::rwx
    group:www:rwx
    mask::rwx
    other::r-x
    default:user::rwx
    default:user:www:rwx
    default:group::rwx
    default:group:www:rwx
    default:mask::rwx
    default:other::r-x
    
    p.s. I know its messy, was doing a number of tests
    
  5. 根据我的想法ACL,如果目录有这样的规则,我的任务应该完成,但是当我尝试在 dir 中创建文件时development,我得到:

    -rw-rw-r--+ 1 www     www      0 Nov 21 09:14 newfile
    

rw-我似乎无法理解为什么它会创建rwx

这可能是我错过的一些简单的东西或者我不理解的一些一般概念。

答案1

您的默认 ACL 替换了 umask,它指定不默认权限,但是最大限度创建新文件的权限。在这种情况下rwxrwxr-x

然后您的应用程序使用它想要的权限调用openor 。creat几乎所有应用程序都会要求rw-rw-rw-提供文件。

您可以通过运行看到这一点strace,例如

$ strace -e trace=file touch newfile
...
open("newfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3

0666是相同的rw-rw-rw-。)

使用按位 AND 将两个权限组合起来得到rw-rw-r--

  rwxrwxr-x     # default ACL
  rw-rw-rw-     # permission requested (e.g. by touch, vim, etc.)
& _________
  rw-rw-r--     # effective permissions

其他解释请参见POSIX 访问控制列表— “默认 ACL 示例”。

所以真正的问题是:为什么需要这些文件可执行?

相关内容