macos - 在 MacOS 中仅删除一个用户的 ACL 条目?出奇地困难

标签 macos bash operating-system acl bsd

<分区>

我正在尝试从我的一个驱动器上的所有文件夹递归中删除为 johndoe 设置的 ACL ,而不处理任何其他条目!任何人都知道如何在不影响其他组/用户已经存在的 ACL 的情况下做到这一点?

我正在寻找“setfacl -d u:johndoe”的 Mac 等价物

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

你为什么要这样做?假设您继承了一个疯狂的文件系统,其中有一堆个人用户而不是组,并且您只想摆脱个人,因为他们已经拥有访问权限。

最佳答案

chmod“-a”选项怎么样?

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" {} \;

它将从当前目录递归地删除 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,其他的似乎也没有用。但是可能有第 3 方工具。也许在 Fink/MacPorts 中?

关于macos - 在 MacOS 中仅删除一个用户的 ACL 条目?出奇地困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/637871/

相关文章:

c++ - 如何以编程方式查找动态库文件的位置?

linux - 等待并行远程进程完成 bash ssh

linux - 无法从 bash 脚本中获取带有空格的路径?

bash - 排序 |独特 | xargs grep ... 其中行包含空格

objective-c - 自定义 NSToolbarItem 按钮未显示

javascript - Android 设备上的 Livereload(主要是 chrome 浏览器)

objective-c - 如何在运行时以编程方式创建多分辨率(视网膜就绪)NSImage?

memory-management - 在ARMv8中,如果全局页表项在不同进程之间发生冲突会发生什么?

python - 如何打开可见的全尺寸 Excel?

c - 拦截来自操作系统的输入