我试图从所有的文件夹中删除一个ACL为johndoe设置,在我的一个驱动器上recursion,而没有任何其他条目! 任何人都知道如何做到这一点,而不会影响其他组/用户已经存在的ACL?
我正在寻找相当于Mac的“setfacl -du:johndoe”
我知道你可以使用chmod从多个文件中删除一个规则,但是我看到的唯一方法是不行的,因为它通过它的索引(例如:每个文件夹的第五个条目)删除了规则,并且我的用户的条目赢了永远是同一个指标。
你为什么想做这个? 假设你inheritance了一个疯狂的文件系统,它拥有大量的个人用户,而不是团体,你想摆脱个人,因为他们已经有访问权限。
这有点长,但你可以这样做:
find . -exec chmod -a "johndoe allow delete,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,read,write,append,execute,list,search,add_file,add_subdirectory,delete_child" {} \;
您还必须使用“拒绝”运行相同的命令,以删除任何禁止用户的规则。
非常感谢Jesse Rusak在StackOverflow – 这是从他的答案cribbed 。
我相信你可能需要-x而不是-d。 一定要testing一下。 加-R来recursion。
setfacl -xR u:johndoe dirname
如果你正在寻找一个GUI应用程序,你可以使用沙箱 – 然后你可以改变ACL并recursion应用,如果有必要,但是在你想做的事情方面有一点限制。
也就是说setfacl在Mac上不可用 – 通过chmod使用chmod可以使用这个function。 chmod -R -a# [NumberOfACL] PATH或通过指定chmod -R -a [ACL to delete] PATH
如果指定username allow [ACL]作为ACL,则可以逐个删除权限。
例如。 chmod -R -a "username allow read" /将从根硬盘驱动器上的任何文件夹或文件上的任何可用ACL中删除任何读取权限。 然后你可以冲洗,并重复其余的ACL可用,如果你知道有些总是在一起,你可以把它们串在一起,例如。 读,写(它们必须用逗号分隔,不能有空格)。
ACL的列表可以从chmod手册页中获得(为了简洁起见),然后通过在脚本中放置每个命令( chmod -R -a "username [ACL whether it's allow or deny]" ),您可以删除所有一个用户从一个文件夹和任何子目录获取ACL。 你现在在OP的答案中有哪些 (而且更简单的方法)
请参阅手册页以获取完整的详细信息