Mag*_*alp 13 mac-osx access-control-list chmod
大多数 unix 派生类可以通过以下方式将 ACL 从一个文件复制到另一个文件:
getfacl filename1 | setfacl -f - filename2
Run Code Online (Sandbox Code Playgroud)
不幸的是,Mac OS X 没有 getfacl 和 setfacl 命令,因为它们已将 ACL 处理卷入 chmod。chmod -E 接受标准输入上的 ACL 列表,但我还没有找到可以在标准输出上以合适格式吐出 ACL 的命令。我想出的最好的是:
ls -led filename1 | tail +2 | sed 's/^ *[0-9][0-9]*: *//' | chmod -E filename2
Run Code Online (Sandbox Code Playgroud)
有没有更强大的解决方案?
额外的问题:有没有一种很好的方法可以在 Python 中做到这一点,而不使用任何未随 10.6 一起提供的模块?
ls -e 在长 (-l) 输出中打印与文件关联的访问控制列表 (ACL)(如果存在)。
这给出了一个结果,例如......
drwxr-xr-x@ 19 localadmin 646B Aug 4 00:21 APPBUNDLE
0: user:localadmin allow add_file,add_subdirectory,writeattr,writeextattr,writesecurity
? ? ? ?
Run Code Online (Sandbox Code Playgroud)
就个人而言,我有“出口”在我的 ~/.bash_profile
export FILE_ALL="read,write,append,execute,delete,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown"
export DIR_ALL="list,search,add_file,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown"
Run Code Online (Sandbox Code Playgroud)
使这样的chmod可能......
sudo chmod +a "允许本地管理员 $DIR_ALL" /APPBUNDLE
从chmod手册页中,有一些信息......暗示确实可以做你描述的事情......
“ACL 使用符号模式语法的扩展进行操作。每个文件都有一个 ACL,包含一个有序的条目列表。每个条目都指向一个用户或组,并授予或拒绝一组权限。如果用户和一个组存在同名,用户/组名称可以前缀“用户:”或“组:”以指定名称的类型。
chmod -E从标准输入中读取 ACL 信息,作为 ACE 的顺序列表,由换行符分隔。如果信息解析正确,则替换现有信息。
另外,我会向BatchMod大喊大叫,它是一个老歌,但对 ACL 和TinkerToolSystem 来说是个好东西。
| 归档时间: |
|
| 查看次数: |
10881 次 |
| 最近记录: |