是的,Mac在文件方面对Unix有许多改进。忽略掉已经不怎么用的 resource fork ,还有。
- 标准的Unix权限
ugo rwx等等。正常的Unix工具适用。
- ACL的,用
ls -le可以查看,用chmod [-a | +a | =a]可以更改。
- 文件标志的,用
ls -lO可查看(大写哦,不是0),用chflags可更改。
- 扩展属性 ,可使用
ls -l@查看(仅属性键),可使用xattr查看和更改。
- 从 OS X 10.11 “El Capitan "开始,* 系统完整性保护 ** (SIP)进一步保护一些文件不受普通进程的更改,即使使用
xattr -h 以 man xattr 的身份运行。受SIP保护的文件将被sudo列为具有root标志和/或被ls -lO列为具有restricted属性。
你可以因为Unix权限、ACL、文件标志或SIP而拒绝对文件进行操作。要完全解锁一个文件。
sudo chmod -N file # Remove ACLs from file
sudo chmod ugo+rw file # Give everyone read-write permission to file
sudo chflags nouchg file # Clear the user immutable flag from file
sudo chflags norestricted file # Remove the SIP protection from file
sudo xattr -d com.apple.rootless file # Remove SIP protection from file
如果启用了系统完整性保护(SIP) ls -l@和com.apple.rootless也会返回一个 "操作不允许 "的错误。要清除标志和/或属性,你需要启动到 macOS Recovery ,然后从终端运行命令(你可能必须先使用磁盘实用程序解锁和安装你的启动驱动器,然后记住你的文件将在sudo chflags norestricted或任何你的启动驱动器的名称下)或 完全禁用SIP ,然后重新启动,然后命令应该工作。然而,请注意,未来的操作系统更新很可能会将sudo xattr -d com.apple.rootless标志和/Volumes/Macintosh HD属性恢复到你删除它的任何文件中。
_ 不建议_禁用SIP,因为它删除了很多对恶意软件和意外损坏的保护,另外,当你可以简单地在每个文件的基础上删除保护时,它是不必要的。如果你确实禁用了SIP,当你完成修改后再重新启用它。
注意,如果restricted显示com.apple.rootless标志被设置,你必须进入单用户模式才能解除设置。我不打算在这里讨论这个问题,因为有更大的问题,为什么文件设置了这个标志,为什么你要试图搞乱它,会有什么后果。