18

我正在尝试将根文件复制到 /System 文件夹中。它适用于所有以前的 OS X 版本,但不适用于 El Capitan 10.11

这里我如何在终端的根目录下复制文件:

MACMINI:~ myusername$ sudo su -
MACMINI:~ root# cp /Users/myusername/Desktop/myfile.plist /System/Library/LaunchDaemons/

结果我收到一个错误:

cp: /System/Library/LaunchDaemons/myfile.plist: Operation not permitted
4

3 回答 3

40

El Capitan 现在以“无根”模式(又称系统完整性保护)保护某些系统目录。如果你运行这个命令ls -lO /System/Library/LaunchDaemons,你会看到那里的目录和文件现在被标记为“restricted”。

您可以像这样禁用无根模式:

  1. 重新启动进入恢复模式(重新启动并按住 Cmd-R)
  2. 打开终端
  3. 使用这个命令:csrutil disable
  4. 重新启动并运行在 El Capitan 之前有效的命令

完成后,强烈建议您按照相同的步骤重新启用 SIP,但csrutil enable在步骤 3 中使用。

在尝试安装 pear/pecl 模块和 macports/homebrew 应用程序时,我遇到了具有相同根本原因的问题。那些通常需要将文件安装到 /usr/include 和 /usr/lib 中,现在它们也受到限制。

注意:互联网上有关此问题的先前答案为您提供了修改 NVRAM 设置的说明,但 Apple 表示 NVRAM 方法将停止使用 El Capitan 的公开版本。GM 版本已经禁用了 NVRAM 解决方法,所以这个答案应该能让你得到你需要的东西。

更新:同样的方法适用于 macOS Sierra,在可预见的未来可能还会有新的 macOS 版本。

另一个更新!看起来 Catalina 试图让我们参与进来。他们将我之前强迫去的所有文件移到了 Linux 必须去的地方: /Users/Shared/Relocated Items 的内容

他们留下了这个有趣 什么是搬迁物品.pdf 的通知:我有点想知道我现在在使用谁的电脑。

无论如何,我认为大多数需要这种解决方法的工具(如 brew 和 PEAR)已经适应了。我真的不知道,因为让 macOS 的行为 100% 像 Linux 一样变得愚蠢,所以当我需要命令行 Linux 的东西时,我会使用虚拟机。

这种解决方法可能仍然对 Catalina 有用。我没试过。为了研究,我不会这样做,但如果我需要试一试,我会回来报告。

于 2015-09-15T16:14:10.010 回答
10

考虑到某些系统目录在 OS X 10.11 (El Capitan) 下根本不会被写入(即使是 root),除非安全措施被禁用(参见Chris Ostmo的回答),显然不修改这些目录是个好主意自定义系统黑客。

应将自己的 LaunchDaemons 安装到:

/Library/LaunchDaemons/

(不是/System/Library/LaunchDaemons/

于 2015-09-18T17:12:11.147 回答
0

不,但是如果您使用El Captain的第二个副本来引导您的系统,例如:

从之前安装的 USB 密钥引导 El Captain,然后您可以执行此操作

cd /Volumes/Usb-Drive 

然后要在 finder 中显示目录,请执行以下操作:

sudo chflags nohidden usr

然后只需用鼠标复制文件,拖放到finder中。

于 2015-12-29T14:28:46.073 回答