我的Web应用程序保存的文件具有与父级不同的文件权限

时间:2011-03-30 11:03:49

标签: apache ubuntu permissions

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

我希望以递归方式为父目录中的所有新文件夹和文件维护用户和组权限。我知道这涉及设置一个粘性位,但我似乎无法找到一个能够准确显示我需要的命令。

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

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. 读/写
  4. / path / to / parent中的文件和文件夹不是世界可读的
  5. 有人可以帮忙吗?

    我在Ubuntu 10.0.4 LTS上运行

2 个答案:

答案 0 :(得分:1)

  

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

嗯 - 不理想。

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

  

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

你需要让目录可执行:

  

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

...

  

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

然后您还需要为执行代码设置umask(0770)(或直接更改权限)并确保apache uid是某个组的成员。 IIRC设置组粘贴位,umask应为2770 - 但请检查手册。

答案 1 :(得分:0)

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

Todo所以在RedHat / CentOS中编辑文件/ etc / sysconfig / httpd,并改为: umask 007

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