我正在尝试从我的一个驱动器上的所有文件夹递归中删除为 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 中?