我正在尝试在我的 Mac(10.6.7)上执行以下操作:
sudo chown myusername:wheel ./entries
但 Unix/Mac 返回“操作不允许”。当我找到ls -lash
罪魁祸首文件时,它看起来如下:
8 -rwxrwxrwx 1 myusername staff 394B Apr 26 23:26 entries
我试过了,sudo
但sudo su
没用。有什么想法吗?
我正在尝试chmod
从我的旧 Ubuntu 机器复制文件。大多数文件都已成功chmod
递归执行;只有这个文件卡住了,我不明白为什么。
答案1
是的,Mac 在文件方面比 Unix 有很多增强。忽略整个资源分叉不再使用的东西有:
- 这标准 Unix 权限
ugo
rwx
等等。适用普通 Unix 工具。 - 访问控制列表's,可用 来查看
ls -le
并可用 来更改chmod [ -a | +a | =a ]
。 - 文件标志可以用
ls -lO
(大写哦,不是零)查看,可以用 更改chflags
。 - 扩展属性,可用 来查看
ls -l@
(仅限属性键)以及可用 来查看和更改xattr
。(如果没有给出任何信息,请使用xattr -h
来获取帮助。)man xattr
- 从 OS X 10.11 “El Capitan” 开始,系统完整性保护(SIP)进一步保护某些文件免受普通进程的更改,即使使用
sudo
运行也是如此。受 SIP 保护的文件将作为具有标志的文件root
列出和/或作为具有属性的文件列出。ls -lO
restricted
ls -l@
com.apple.rootless
由于 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),sudo chflags norestricted
也会sudo xattr -d com.apple.rootless
返回“操作不允许”错误。要清除标志和/或属性,您需要启动到macOS 恢复然后从终端运行命令(您可能必须先使用磁盘工具来解锁并安装您的启动驱动器,然后记住您的文件将位于/Volumes/Macintosh HD
或您的启动驱动器的名称下)或完全禁用 SIP然后重新启动,命令应该就可以正常工作了。但请注意,将来的操作系统更新可能会将标志restricted
和com.apple.rootless
属性恢复到您从中删除的任何文件。
不建议禁用 SIP因为它会删除大量针对恶意软件和意外损坏的保护,而且当您可以简单地根据每个文件删除保护时,它就没有必要了。如果您确实禁用了 SIP,请在完成更改后重新启用它。
请注意,如果ls -lO
显示schg
已设置标志,则必须进入单用户模式才能取消设置。我不会在这里讨论这个问题,因为还有更大的问题,比如为什么文件设置了该标志、为什么你要试图弄乱它以及后果会是什么。
答案2
我也遇到了同样的问题。结果发现有问题的文件被操作系统标记为“已锁定”。我找到了这个解决方案,它在几秒钟内解决了问题:
http://explanatorygap.net/2005/07/10/unlocking-files-recursively-from-the-command-line/
似乎
rm
Tiger 中的命令已经发生了变化,如果您rm -Rf
以提升的权限使用,它将自动解锁文件。
在 Tiger 之前的 OS X 中:find /Volumes/Transit -flags +uchg -print0 | xargs -0 chflags nouchg
在 Tiger 之后的 OS X 中:sudo rm -Rf foldername/
此外,即使在 OS X 10.4 之后,也可能存在文件元数据标记(如uchg
和uappnd
),这些标记会阻止对文件权限或所有权的任何修改。 chflags
可以删除这些标记。一些文件属性/元数据以及不同复制工具如何处理它们是这里。
答案3
我在使用 Crashplan.app 时也遇到了同样的问题。
这里列出的所有解决方案都对我不起作用,但这个解决方案确实起了作用: http://forums.macrumors.com/showthread.php?t=1546163
您必须更改系统和用户不可变标志:
执行此操作以查看文件/文件夹上哪些标志处于活动状态:
ls -lhdO MyFile
响应可能如下所示:
drwxrwxr-x 3 root admin schg,uchg 102B Apr 8 2013 MyFile
響鳴,乌赫格是那些不可变的标志。一个用于系统,一个用于用户。要删除它们,请执行以下操作:
chflags noschg CrashPlan.app # this removes system immutable flag
chflags nouchg CrashPlan.app # this removes the user immutable flags
然后,至少对我来说,该文件已解锁,您可以删除它!
答案4
经过一番努力之后,我必须采取以下步骤来解决问题:
- 将文件移至
~/Desktop
sudo chown myusername:staff ./entries
- 将文件移回其原始位置不起作用(再次不允许操作),所以......
sudo rm ./entries
sudo mv ~/Desktop/entries ./entries