如何在树中的每个文件/目录拥有相同的所有者,组,perms,acls?

玩一个scilinux 6.1盒子。 fs是启用了acls的ext4。

如果我有一个目录/ pub,我希望它里面的所有东西总是没有例外地拥有一个预定义的所有者,预定义的组,预定义的权限集和一组预定义的acls,无论是谁拷贝了文件/目录/不pipe是不是nuthin',如果它变成了mv'ed,也没关系。

基本上,“顶”目录中的任何文件/目录(在/ pub中为/ pub,在/ usr / src中为src,在/ var / lib / html中为html)被拥有:按顶层目录的所有者:组分组,无论它如何到达那里,无论谁试图改变它。 无论什么或如何,权限将永远是无论是什么权限,而且无论在哪里,acl集总是相同的。

我如何configuration?

我知道这一定是一个常见问题解答,但如果我能得到它,就会被淹没。

你不能。 使用扩展ACL来提供所需的权限(默认情况下将其应用于所有新文件),并有效地忽略传统权限位。

您可以使用chmod g+s /pub的“set group id”function强制组添加到该目录的所有文件和目录相同,但是“set user id”( chmod o+s /pub )doesn在大多数系统上都不行。

你不能。 一个可能适用于您的选项是设置一个cron作业,以便在整个目录结构上定期运行chown -Rchgrp -Rchmod -R ,以recursion方式设置所有者/组/许可权。 这绝对是一个混乱,而且对于非常大的目录结构将是很多工作,但它将修复权限。

您将需要为这些命令提供所有者/组/许可权,以及对这些命令进行操作的顶级目录(例如chown -R nobody /tmp/testdir

或者,您可以使用inotify设置一个程序来观察目录中的更改,然后根据需要检查或更正权限,但是inotify有它自己的问题,尤其是如果有许多嵌套的子目录…您必须订阅更改所有这些目录中的通知…

听起来像@ womble的答案是最好的select,但我没有使用扩展ACL。 只是想给几个select。

一个肮脏的做法是挂载FAT文件系统,并使用uid = gid =。 这样你就不会有办法改变任何文件的所有者,只是因为文件系统不支持用户,组或ACL。

你可以用下面列出的命令来testing它:

 dd if=/dev/zero of=/var/pubfs bs=1024 count=40960 # Create a file to test it mkfs.vfat -F 32 /var/pubfs # Format it as FAT32 mount -t vfat -o uid=user,gid=group /var/pubfs /pub # Mount it