【问题标题】:How to enforce permissions on a Web directory?如何对 Web 目录强制执行权限?
【发布时间】:2014-04-02 02:19:32
【问题描述】:

我维护一个 Web 目录:

drwxrwsr-x 2 hendry www-data 57344 Apr  1 21:02 foobar/

我以为我在那里创建了一个“粘性位”(请纠正我)以确保该目录中文件的 -rw-rw-r- 权限,但它似乎不起作用。

有时在 foobar/ 中创建的文件可以具有 -rw-r--r-- 权限(缺少对 www-data 的写入!)。我认为这是因为某些 Web 进程使用该权限写入文件。因此,与其进入所述 Web 应用程序(假设我不能这样做)并更改 umask,我如何确保文件始终具有 -rw-rw-r-- ?

我要确保 httpd 进程始终可以对这些文件进行操作。

【问题讨论】:

    标签: permissions file-permissions


    【解决方案1】:

    目录上的 setgid 位仅确保在目录内创建的文件也归拥有该目录的组所有。它不影响授予组的权限(中间三位)。

    你想要的是覆盖目录中创建的文件的默认权限位,即:

    setfacl -m default:user:www-data:rwx foobar/
    

    foobar/ 上的 ACL 应如下所示:

    foobar% getfacl .
    # file: .
    # owner: www-data
    # group: www-data
    user::rwx
    group::r-x
    other::r-x
    default:user::rwx
    default:group::r-x
    default:group:www-data:rwx
    default:mask::rwx
    default:other::r-x
    

    如果你创建一个带有限制性 umask 的文件...

    foobar% umask
    077
    foobar% touch foo
    foobar% ls -l
    total 0
    -rw-rw-r--+ 1 www-data www-data 0 Apr  2 11:18 foo
    

    请注意,第一列末尾有一个 +,表示存在 ACL,您应该使用 getfacl 来查看全貌。

    foobar% getfacl foo
    # file: foo
    # owner: www-data
    # group: www-data
    user::rw-
    group::r-x                      #effective:r--
    group:www-data:rwx              #effective:rw-
    mask::rw-
    other::r--
    

    【讨论】:

      猜你喜欢
      • 2011-08-09
      • 2012-08-27
      • 2015-06-25
      • 2014-03-08
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 2012-08-01
      • 2011-03-13
      相关资源
      最近更新 更多