Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否仅为MacOS中的一个用户删除ACL条目?奇怪的困难_Macos_Bash_Operating System_Acl_Bsd - Fatal编程技术网

是否仅为MacOS中的一个用户删除ACL条目?奇怪的困难

是否仅为MacOS中的一个用户删除ACL条目?奇怪的困难,macos,bash,operating-system,acl,bsd,Macos,Bash,Operating System,Acl,Bsd,我正在尝试从我的一个驱动器上的所有文件夹中递归地删除johndoe的ACL集,而不使用任何其他条目!有人知道如何做到这一点而不影响其他组/用户已经存在的ACL吗 我在找Mac版的“setfacl-du:johndoe” 我知道您可以使用chmod从多个文件中删除规则,但我看到的唯一方法不起作用,因为它通过其索引(例如:每个文件夹的第5个条目)删除规则,并且我的用户条目并不总是相同的索引 你为什么要这么做?假设你继承了一个疯狂的文件系统,它有一群单独的用户而不是组,你只想摆脱这些个人,因为他们已经

我正在尝试从我的一个驱动器上的所有文件夹中递归地删除johndoe的ACL集,而不使用任何其他条目!有人知道如何做到这一点而不影响其他组/用户已经存在的ACL吗

我在找Mac版的“setfacl-du:johndoe”

我知道您可以使用chmod从多个文件中删除规则,但我看到的唯一方法不起作用,因为它通过其索引(例如:每个文件夹的第5个条目)删除规则,并且我的用户条目并不总是相同的索引


你为什么要这么做?假设你继承了一个疯狂的文件系统,它有一群单独的用户而不是组,你只想摆脱这些个人,因为他们已经有了访问权限。

我将把
ls-le
的输出归为用户名,然后用
awk
找到的索引号删除规则。只要你不叫你的用户读、写、拒绝、允许、删除等等;)

find/-print0-type fd | xargs-0 ls-le |更多

可能会帮助您开始探索文件系统

您可以使用另一个命令来替换
more
,例如用于ACL输出的
grep
,以及用
fsaclctl
处理
grep
结果的后续管道,chmod“-a”选项如何

它将从当前目录中递归删除johndoe对所有文件的所有ACL权限。(它将为所有没有ACL的文件打印错误,但对其余文件仍然有效)。正如您所提到的,您还必须使用“继承”和“拒绝”来运行此操作

编辑:以下是在Mac OS X上使用ACL的工具:

# cat has_acl.sh 
otool -IV $1 2>&1 | grep _acl_ > /dev/null
# find /bin /sbin /usr/bin /usr/sbin -exec ./has_acl.sh {} \; -print
/bin/chmod
/bin/ls
/usr/bin/ex
/usr/bin/rview
/usr/bin/rvim
/usr/bin/vi
/usr/bin/view
/usr/bin/vim
/usr/bin/vimdiff
/usr/sbin/cupsd
/usr/sbin/kadmind
/usr/sbin/pkgutil

vi只读取并保存acl,其他的似乎也没有用。但可能有第三方工具。也许在Fink/MacPorts?

中,这对于单个文件夹来说很好,但我需要对数千个文件执行此操作。这是一个2TB的卷,这是循环甚至find命令可以提供帮助的地方。如果某个东西对一个文件夹有效,那么它对所有文件夹都有效。我想知道是否有一种非常简单的方法可以做到这一点。对于初学者,您只能通过删除ACL条目的规则号(对于6TB的文件,规则号不相同)或删除其确切权限(奇怪的是)来删除ACL条目。一切似乎都很混乱。默认情况下,mac os上未安装fsaclctl。。。但事实并非如此。我是说。抱歉,误读为“setfacl”,我已根据询问者的要求重新发布了此消息。(显然,在发布赏金后,你不能接受旧的答案,即使是经过编辑的答案?疯狂。)抱歉,杰西,我仍然没有选择接受此作为答案。我也没办法再定一次赏金了。它看起来要么是一个错误,要么是一些我不知道的过程。我确实看到了关闭/打开问题的选项,但状态显示为“已打开”。好吧,不用担心。我希望命令起作用了!你可能必须在赏金到期前接受。嗨,比尔,真的。这就是为什么我将自己的问题标记为移动到serverfault,这是我最初发布此问题时不存在的网站;)
# cat has_acl.sh 
otool -IV $1 2>&1 | grep _acl_ > /dev/null
# find /bin /sbin /usr/bin /usr/sbin -exec ./has_acl.sh {} \; -print
/bin/chmod
/bin/ls
/usr/bin/ex
/usr/bin/rview
/usr/bin/rvim
/usr/bin/vi
/usr/bin/view
/usr/bin/vim
/usr/bin/vimdiff
/usr/sbin/cupsd
/usr/sbin/kadmind
/usr/sbin/pkgutil