在 MacOS 中仅删除一个用户的 ACL 条目? 异常困难

发布于 2024-07-14 11:49:08 字数 1459 浏览 9 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

橘味果▽酱 2024-07-21 11:49:08

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。 保留 ACL,其他的似乎也没什么用。 但可能有第三方工具。 也许在 Fink/MacPorts 中?

How about the chmod "-a" option?

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

It will remove all ACL permissions for johndoe on all files recursively from the current directory. (It will print errors for all files without an ACL, but it will still work on the rest of 'em). As you mentioned, you'll have to run this with "inherited" and "deny" as well.

EDIT: Here are tools that use ACLs on Mac OS X:

# 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 only reads & preserves the ACLs, the others don't seem useful, either. But there could be 3rd party tool. Maybe in Fink/MacPorts?

念三年u 2024-07-21 11:49:08

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

I'd grep the output of ls -le for the username, then remove the rule with the index number you found using awk. As long as you don't call your users read, write, deny, allow, delete or such ;)

っ〆星空下的拥抱 2024-07-21 11:49:08

查找 / -print0 -type fd | xargs -0 ls -le | xargs -0 more

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

您可以将 more 替换为其他命令,例如用于 ACL 输出的 grep,以及使用 grep 处理结果的后续管道。 >fsaclctl。

find / -print0 -type fd | xargs -0 ls -le | more

might help you to start exploring the filesystem.

You could replace more with another command, such as a grep for ACL output, and a subsequent pipe to handle the results of grep with fsaclctl.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文