为什么chown在OS X上报告“不允许操作”?


64

我试图在Mac(10.6.7)上执行以下操作:

sudo chown myusername:wheel ./entries

但Unix / Mac返回“不允许的操作”。当我ls -lash罪魁祸首文件时,它看起来如下:

8 -rwxrwxrwx   1 myusername  staff   394B Apr 26 23:26 entries

我试着sudosudo su; 没有任何效果。有什么想法吗?

我正在尝试chmod从旧的Ubuntu盒子中复制文件。大多数文件已成功chmod递归编辑;只是这个卡住了,我不明白为什么。


1
你试过了sudo chgrp wheel ./entries吗?
方圆形

1
进行文件系统检查。打开“磁盘工具”,选择您的卷,然后单击“ 验证磁盘”,然后在必要时单击“ 修复磁盘”
丹尼尔·贝克

确保文件未在Finder中锁定(图标上没有锁定标志)。要更改它,请打开“ 获取信息”对话框,然后取消选中“ 锁定”
丹尼尔·贝克

如果它是“外部”卷(即不是系统卷),则可能必须删除“忽略此卷的所有权”选项。(有关卷本身,请参阅“获取信息”窗口底部的信息)。
mivk 2012年

Answers:


84

是的,Mac在文件方面对Unix进行了许多增强。忽略不再使用的整个资源派生事物,有:

  • 标准的Unix权限 ugo rwx等。普通的Unix工具适用。
  • ACL,可通过查看ls -le和更改chmod [ -a | +a | =a ]
  • 文件标记可通过ls -lO(大写字母OH,不为零)查看,并且可通过更改chflags
  • 扩展属性,可通过ls -l@(仅属性键)查看,并通过可查看和更改xattr。(xattr -h如果man xattr没有帮助您,请寻求帮助。)
  • 从OS X 10.11“ El Capitan”开始,系统完整性保护(SIP)进一步保护了某些文件,sudo使其免受普通进程的更改,即使使用时也是如此root。受SIP保护的文件将被标记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 Recovery并从Terminal运行命令(您可能必须先使用Disk Utility来解锁并安装启动驱动器,然后记住文件将在/Volumes/Macintosh HD启动状态下或以任何方式启动命名驱动器)或完全禁用SIP,然后重新启动,然后命令应该起作用。但是请注意,将来的操作系统更新可能会将restricted标志和com.apple.rootless属性还原到您从中删除的所有文件。

不建议禁用SIP,因为它会删除很多针对恶意软件和意外损坏的保护,此外,当您只需按文件删除保护时就没有必要了。如果确实禁用了SIP,请在完成更改后重新启用它。

请注意,如果ls -lO显示该schg标志已设置,则必须进入单用户模式才能取消设置它。我不打算在这里讨论这个问题,因为关于文件为何设置了该标志以及为什么要尝试弄乱该标志以及后果将是一个更大的问题。


7
除此之外,其他标志可能会阻止您更改文件。在我的脚本中,我放了sudo chflags -R nouchg,noschg,nouappnd,nosappnd,noopaque,dump .
djjeck

1
注意:如果某些东西具有“ unchangeable”标志,则“获取信息”中的“锁定”复选框将被选中并显示为灰色。“ sudo chflags nouchg”修复了该问题。
Foo Bar

1
我不能做的-Nugo+rw两者兼而有之(我Failed to clear ACL on file ugo+rw: No such file or directory),但运行它们单独工作的罚款。如果需要递归,则-R必须是第一个参数。
owenfi

3
请注意,系统完整性保护(无根)也会在El Capitan及更高版本上引起此问题。要解决此问题,请启动到“恢复模式”(Cmd-R),打开“终​​端”并运行csrutil disable,然后重新启动(要重新启用,请使用csrutil enable)。
Erwin Wessels

谢谢...我对文件标志一无所知。现在我明白为什么会这样说了override rwxrwxrwx huttarl/staff uchg for green.html?
LarsH 2016年

18

我有同样的问题。事实证明,该操作系统将有问题的文件标记为“锁定”。我找到了此解决方案,并在几秒钟内解决了问题:

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可以删除标志。此处提供了一些文件属性/元数据以及不同复制工具如何处理它们。


sudo rm -Rf foldername/正在OSX Mountain Lion上完美工作
Aryo,2012年

5
@Aryo:rm删除目录。有没有一种方法可以只解锁所有内容而不删除它?当我uchg没有设置外观时,可以按预期的方式打开和关闭它(使用chflags [no]uchg),但这对Finder中的锁定图标或对我的功能没有影响chown
orome

12

我在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

schguchg是那些不可变的标志。一种用于系统,另一种用于用户。要删除它们,请执行以下操作:

chflags noschg CrashPlan.app # this removes system immutable flag
chflags nouchg CrashPlan.app # this removes the user immutable flags

然后,至少对我来说,该文件已解锁,您可以删除它!


太棒了,虽然不得不chflags使用sudo,但这是有道理的
Felipe

CrashPlan.app也遇到了同样的问题(我有drwxrwxr-x@ 3 _BGMXPCHelper admin schg 96B 9 Jan 2018 CrashPlan.app),并且这是唯一允许我删除它的解决方案,谢谢!
webeno

12

在OS X 10.11(El Capitan)中,这也可能是由新的无根功能引起的。请参阅此答案以获取解释。

总之,对于某些重要的目录,也没有办法对其进行修改-您是否使用sudochownchmod。这会影响/usr目录(尽管您可以修改/usr/local)。

要修改不受Rootless保护的目录,您需要禁用Rootless。并且,当然,在进行修改后请重新启用它,因为它是重要的安全性增强。


1
哇。那使我发疯。我需要以某种方式将某些内容复制到/ usr / lib中,否则无法在/ usr / local / lib中找到它(不要问我为什么)。那就成功了。
qwerty_so

4
实际上,您不必完全禁用Rootless,只需启动进入恢复模式(无论如何都必须禁用Rootless),然后从终端上进行所需的更改。
Old Pro

6

经过很多努力之后,以下是解决此问题的方法:

  • 将文件移到 ~/Desktop
  • sudo chown myusername:staff ./entries
  • 无法将文件移回其原始位置(再次不允许操作),所以...
  • sudo rm ./entries
  • sudo mv ~/Desktop/entries ./entries

4

关于主文件夹,我也遇到了同样的问题。最后,我只是使用像这样的查找器:

转到->计算机->磁盘->用户->用户名->右键单击->获取信息

我发现它已被锁定,可能是我过去忘记了。取消选中锁定的复选框,问题已解决。

我可以建议使用finder中的“获取信息”来解决此类问题。

(作业系统X 10.8.3)


这有助于我.iso从出现故障的Virtual Box中解锁。
Nakilon 2014年

1

确保文件及其父文件夹均已解锁

尝试删除Mac Mail电子邮件签名文件时,我遇到了类似的问题。在解锁文件及其父文件夹之前,我无法删除它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.