【问题标题】:Files saved by my web application has different file permissions from parent我的 Web 应用程序保存的文件与父级具有不同的文件权限
【发布时间】:2011-07-26 00:31:19
【问题描述】:

我有一个文件夹,其中将通过脚本自动创建新的子文件夹和文件。

我想为放置在父目录中的所有新文件夹和文件递归地维护用户和组权限。我知道这涉及到设置一个粘性位,但我似乎找不到能准确显示我需要的命令。

这是我到目前为止所做的:

sudo mkdir -p /path/to/parent
sudo chmod -R 660 myself:somegroup /path/to/parent

此后,我希望将 660 权限递归设置到 /path/to/parent 中的任何文件夹和文件

但是,每当 Apache 保存文件夹/文件时,它都会为其分配 700 的权限,并将用户和组设置为 apache 用户。这不是我想要的。我希望父级下的所有文件/子文件夹对我自己有 660 个权限:somegroup。

实际上八进制标志 660 可能甚至都不正确。我想要的权限是:

  1. /path/to/parent 下的目录可由具有权限的用户执行
  2. 文件可由用户本人和某个组的成员读取/写入
  3. /path/to/parent 中的文件和文件夹不是世界可读的

有人可以帮忙吗?

我在 Ubuntu 10.0.4 LTS 上运行

【问题讨论】:

    标签: apache ubuntu permissions


    【解决方案1】:

    sudo mkdir -p /path/to/parent sudo chmod -R 660 我自己:somegroup /path/to/parent

    erm - 不理想。

    如果您希望创建的新文件/目录具有相同的组所有权,您需要在目录上设置组粘性位

    find /path/to/parent -type d -exec chmod g+s {};

    你需要使目录可执行:

    find /path/to/parent -type d -exec chmod ug+x {};

    ...

    但是,每当 Apache 保存文件夹/文件时,它都会为其分配 700 的权限,并将用户和组设置为 apache 用户

    那么你还需要为执行代码设置umask(0770)(或直接更改权限)并确保apache uid是somegroup的成员。 IIRC 设置组粘性位,umask 应为 2770 - 但请查看手册。

    【讨论】:

      【解决方案2】:

      您可以设置 apache 以使用特定的 umask 写入新文件。

      在 RedHat/CentOS 中编辑文件 /etc/sysconfig/httpd,然后更改为: umask 007

      在 debian/Ubuntu 中使用具有相同设置的文件 /etc/apache2/envars

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-01
        • 1970-01-01
        • 2019-08-29
        • 2011-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多