无法在OS X上通过root移动文件


53

我试图将一些文件移动到OS X上的子文件夹。一个文件拒绝移动。它说Operation not permitted。我再次以root用户身份尝试:

$ sudo mv file subfolder/
mv: rename file to subfolder/file: Operation not permitted
$ sudo mv file filex
mv: rename file to filex: Operation not permitted
$ lsattr file
lsattr: Inappropriate ioctl for device While reading flags on file

我试过lsattr其他文件;我尝试过的所有文件都给了我相同的信息:Inappropriate ioctl for device While reading...

来自Linux,我不知道标志,所以这里是输出ls -leO@ file

$ ls -leO@ file otherfile
-rwxrwxrwx  1 eeytan  staff  uchg 79549 Nov 11  2010 file
-rw-r--r--  1 eeytan  staff  -     5071 Sep  7 02:37 otherfile

我尝试了OS X磁盘实用程序;它说我的磁盘上没有错误。这里发生了什么?


1
lsattr不是标准的OS X命令;试一试ls -leO@。另外,文件在什么卷上?尝试mount查看该卷安装了哪些属性。
Gordon Davisson

1
@GordonDavisson,看来您步入正轨。ls -leo @表示该文件是唯一具有“ uchg”属性的文件,对我来说,这听起来很像“不可更改”。
eje211 2013年

欢迎来询问不同!我将删除编辑内容,将其作为一个问题,并将答案留给答案部分...
bmike

Answers:


30

听起来文件已被锁定,这就是uchg属性出现的原因。您应该能够使用以下命令删除锁定的属性:

chflags nouchg file

或在Finder中右键单击文件,单击“获取信息”,然后取消选中“锁定”复选框


1
哈!好像您在我发布此答案时回答了自己的问题!
binarybob 2013年

84

对于在OS X 10.11+时代(El Capitan或更高版本)上受挫的人们:Apple在OS X中增加了全新的安全层。他们从根本上剥夺了一些特权。您尝试修改的文件带有一个restricted标志。只有restricted经过Apple签名的进程才能修改这些文件。但是,您可以通过以下方式禁用此安全系统:在恢复模式下启动,然后通过执行以下操作在终端中将其禁用csrutil disable

另外,您也可以在恢复模式下启动Terminal并在那里删除文件。甚至尝试在具有HFS +支持的Linux环境中引导(至少,如果您尚未使用APFS,则)更改文件。


1
csrutil中的csr代表什么?
Michael Terry

12
我相信是本杰明·富兰克林(Benjamin Franklin)说的:“那些为安全性而牺牲易用性的人也不应该”。或者其他的东西。
dgig '16

5

尝试:

chflags -f -R nouchg directory

在更高级别的目录上可以解决此问题。


FWIW:我有这个问题zsh: locking failed for /Users/me/.zhistory: operation not permitted: reading anyway和上运行我的主目录此命令修复它
雷恩

0

我也遇到了这个问题,我发现文件所在的文件夹已锁定。因此,请确保这不是真的。在查找程序的文件夹中执行“获取信息”,并确保未选中锁定的复选框。


0

我意识到这是一个非常老的话题,但是我看不到该线程可以解决我的症状,因此我认为我会发表另一种观点。

我碰巧遇到了一个外部驱动器,该驱动器在Snow Leopard iMac上运行良好,并且在此过程中已升级到El Capitan。今年早些时候,我将驱动器放入了一个新的Windows 10机器中,该机器正在运行Windows的Paragon HFS。我将数百GB的文件 Windows 复制该驱动器上的HFS +,然后重新插入到iMac中。一切工作正常,除了我拥有一个用于备份的暂存文件的shell脚本遇到了此问题。

简而言之:在El Capitan或Windows 10下使用Paragon HFS创建的文件和文件夹,当移回Snow Leopard框时Get Info,在Finder中选择时不会选中“锁定”单选框。但是,其他人的建议对我来说效果很好:

  • 通过ls -leO@在可疑文件上运行(大写哦)来验证问题所在
  • 以root身份chflags -R nouchg在父目录上运行(Snow Leopard中没有-f)

它会起作用,如果您的驱动器在操作系统之间或使用Paragon HFS,请不要指望完全相同的视觉提示。


chflags -f -R nouchg目录确实起作用,谢谢
odjeezeus

0

我有一个无法在终端中删除的文件:

$ sudo ls -leO@ foo@example.com/Documents/.%cb_defense/cb.doc
-rw-rw-rw-  1 root  wheel  - 41984  1 Mar 11:20 foo@example.com/Documents/.%cb_defense/cb.doc

$ sudo rm -rf foo@example.com/Documents/.%cb_defense/cb.doc
rm: foo@example.com/Documents/.%cb_defense/cb.doc: Operation not permitted

对我有用的是打开Finder并删除整个包含目录。以我的理解,Finder会完全忽略目录内容而将其作为一个单元删除,因此它不受常规限制rm -rf

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.