2011-05-04 20:42:49 +0000 2011-05-04 20:42:49 +0000
69
69

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

我试图在我的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,只有这个卡住了,我不明白为什么。

答案 (7)

91
91
91
2012-12-12 21:58:23 +0000

是的,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 -hman 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标志被设置,你必须进入单用户模式才能解除设置。我不打算在这里讨论这个问题,因为有更大的问题,为什么文件设置了这个标志,为什么你要试图搞乱它,会有什么后果。

18
18
18
2011-06-08 17:47:37 +0000

我也有同样的问题。原来是违规文件被操作系统标记为 “锁定"。我找到了这个解决办法,几秒钟就解决了问题。 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之后,也可能存在文件元数据标志,如uchguappnd,这些标志阻止对文件权限或所有权进行任何修改。chflags可以删除这些标志。一些文件属性/元数据以及不同的复制工具如何处理这些属性/元数据是 这里

12
12
12
2015-09-30 23:09:40 +0000

在 OS X 10.11 (El Capitan)中,这也可能是由新的 Rootless 功能引起的。请参阅 本回答 了解解释。

简而言之,对于某些重要的目录,没有办法修改它们–无论你使用sudochown还是chmod。这将影响到/usr目录,(虽然你可以修改/usr/local)。

要修改一个受Rootless保护的目录,你需要 禁用Rootless 。当然,在进行修改后要重新启用,因为这是一项重要的安全增强措施。

12
12
12
2014-08-21 17:30:15 +0000

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

schg , uchg是那些不可改变的标志. 一个是系统的,一个是用户的。要删除它们,请执行以下操作。

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

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

5
5
5
2011-05-04 21:02:23 +0000

经过一番挣扎,我不得不这样做来解决这个问题:

  • 移动文件到~/Desktop
  • sudo chown myusername:staff ./entries
  • 移动文件到原来的位置不起作用(操作不允许,再次),所以……
  • sudo rm ./entries
  • sudo mv ~/Desktop/entries ./entries - 0x6&
4
4
4
2013-09-19 22:49:53 +0000

我也有同样的问题,关于我的home文件夹。最后我就用finder来解决这个问题。

Go -> Computer -> your disk -> Users -> your user name -> right click -> Get Info

我发现它被锁住了,可能是我以前做的忘记了。取消了锁定的复选框,问题解决了。

我建议使用finder的 “Get Info "来解决这类问题。

(OS X 10.8.3)

1
1
1
2015-03-23 15:28:32 +0000

确保文件和它的父文件夹都被解锁

我在尝试删除一个Mac Mail邮件签名文件时也面临类似的问题。我无法删除它,直到我解锁了该文件及其父文件夹。