我有一个文件夹,可以通过脚本自动创建新的子文件夹和文件。
我希望以递归方式为父目录中的所有新文件夹和文件维护用户和组权限。我知道这涉及设置一个粘性位,但我似乎无法找到一个能够准确显示我需要的命令。
这是我到目前为止所做的:
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可能甚至不正确。我想要的权限是:
有人可以帮忙吗?
我在Ubuntu 10.0.4 LTS上运行
答案 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