强制新创建的目录和文件从父目录继承权限

强制新创建的目录和文件从父目录继承权限

如何让新创建的文件和目录继承父目录的权限?
例如,
Parent

drwxrwx--- parentdir

那么孩子们应该 -

-rwxrwx--- childFile
drwxrwx--- childDir

我知道 setgid,但是它只会将组 ID 更改为所有者的组 ID,而不会复制父级的确切权限。

答案1

您需要使用 定义“默认 ACL” setfacl。这不仅适用于命名用户/组 ACL,还适用于基本的未命名权限位:

setfacl -d -m "u::rwx,g::rwx,o::-" parentdir

请注意,您不能强制新文件为可执行文件;即使 ACL 授予 +rwx,新创建的文件仍将有一个mask::条目将其限制为仅 +rw,因为这是通常大多数人想要的,因为子文件和子文件夹不可能有不同的默认 ACL。

(另请注意,一旦文件或文件夹具有 ACL,尝试通过 chmod 更改其“组”rwx 权限实际上会更改面具一次影响所有 ACL 的条目 – 而不仅仅是未命名组条目。这通常很好,因为它可以让您清楚地看到ls -l文件是否已授予任何人写入权限,但这也意味着,如果要仅更改未命名组的访问权限,您现在需要setfacl -m g::???。)

这不会影响 setgid 位,可以chmod g±s照常使用来更改它。


(另请注意,与 Windows 或 NFS4“可继承”ACL 不同,POSIX“默认”ACL 仅在创建项目时生效,但子项目权限不是当父级的“默认”ACL 发生改变时重新计算。

了解更多信息:

相关内容