在 root 上不允许操作 - El Capitan(无根禁用)
Operation Not Permitted when on root - El Capitan (rootless disabled)
我正在尝试在 OS X El Capitan 上将某些内容移动到 /usr/bin。我使用以下命令禁用了 rootless:sudo nvram boot-args="rootless=0"; sudo reboot
,但我不断收到相同的错误:
MacBook-Air:~ Mark$ sudo cp class-dump /usr/bin
Password:
cp: /usr/bin/class-dump: Operation not permitted
MacBook-Air:~ Mark$ sudo mv class-dump /usr/bin
mv: rename class-dump to /usr/bin/class-dump: Operation not permitted
Nvm。对于遇到此问题的任何其他人,您需要重新启动 mac 并在启动时按 ⌘+R。然后进入 Utilities > Terminal 并输入以下命令:
csrutil disable
reboot
这是系统完整性保护的结果。更多信息 here.
编辑
如果您知道自己在做什么并且习惯于 运行 Linux,您应该使用上述解决方案,因为许多 SIP 限制是一个彻底的痛苦。
但是,如果您是 tinkerer/noob/"poweruser" 并且不知道自己在做什么,这可能非常危险,您最好使用 .
正确的解决方案是复制或安装到 /usr/local/bin
而不是 /usr/bin
。这是由于 系统完整性保护 (SIP)。 SIP 将 /usr/bin
设置为只读,但将 /usr/local
保留为可读写。
SIP 不应如上述答案中所述禁用,因为它增加了另一层保护,防止恶意软件获得 root 访问权限。 Here 完整地解释了 SIP 的作用及其用途。
正如 this answer 中所建议的那样,不应仅禁用 SIP(无根模式)"It is not recommended to disable rootless mode! The best practice is to install custom stuff to "/usr/local"。"
如果你想掌控/usr/bin/
您需要重新启动系统:
听到开机音后,按住Command-R开机进入Recovery System
单击实用程序菜单和select终端
键入 csrutil disable 并按 return
点击菜单然后select重启
提交更改后,确保 re-enable SIP!它可以保护您的系统。 (与上述步骤相同,除了类型:csrutil enable)
如果在调用 "csrutil disabled" 后您的命令仍然无效,请尝试在终端中使用 "sudo",例如:
sudo mv geckodriver /usr/local/bin
它应该可以工作。
最可能的原因是系统完整性保护 (SIP) - csrutil 是命令行实用程序。您需要禁用它才能查看目录。
- 要查看您的状态,您需要:
csrutil status
- 要禁用它(这通常是个坏主意):
csrutil disable
(那么您可能需要重新启动)。
要启用它(完成后应该重新打开):
csrutil enable
我正在尝试在 OS X El Capitan 上将某些内容移动到 /usr/bin。我使用以下命令禁用了 rootless:sudo nvram boot-args="rootless=0"; sudo reboot
,但我不断收到相同的错误:
MacBook-Air:~ Mark$ sudo cp class-dump /usr/bin
Password:
cp: /usr/bin/class-dump: Operation not permitted
MacBook-Air:~ Mark$ sudo mv class-dump /usr/bin
mv: rename class-dump to /usr/bin/class-dump: Operation not permitted
Nvm。对于遇到此问题的任何其他人,您需要重新启动 mac 并在启动时按 ⌘+R。然后进入 Utilities > Terminal 并输入以下命令:
csrutil disable
reboot
这是系统完整性保护的结果。更多信息 here.
编辑
如果您知道自己在做什么并且习惯于 运行 Linux,您应该使用上述解决方案,因为许多 SIP 限制是一个彻底的痛苦。
但是,如果您是 tinkerer/noob/"poweruser" 并且不知道自己在做什么,这可能非常危险,您最好使用
正确的解决方案是复制或安装到 /usr/local/bin
而不是 /usr/bin
。这是由于 系统完整性保护 (SIP)。 SIP 将 /usr/bin
设置为只读,但将 /usr/local
保留为可读写。
SIP 不应如上述答案中所述禁用,因为它增加了另一层保护,防止恶意软件获得 root 访问权限。 Here 完整地解释了 SIP 的作用及其用途。
正如 this answer 中所建议的那样,不应仅禁用 SIP(无根模式)"It is not recommended to disable rootless mode! The best practice is to install custom stuff to "/usr/local"。"
如果你想掌控/usr/bin/
您需要重新启动系统:
听到开机音后,按住Command-R开机进入Recovery System
单击实用程序菜单和select终端
键入 csrutil disable 并按 return
点击菜单然后select重启
提交更改后,确保 re-enable SIP!它可以保护您的系统。 (与上述步骤相同,除了类型:csrutil enable)
如果在调用 "csrutil disabled" 后您的命令仍然无效,请尝试在终端中使用 "sudo",例如:
sudo mv geckodriver /usr/local/bin
它应该可以工作。
最可能的原因是系统完整性保护 (SIP) - csrutil 是命令行实用程序。您需要禁用它才能查看目录。
- 要查看您的状态,您需要:
csrutil status
- 要禁用它(这通常是个坏主意):
csrutil disable
(那么您可能需要重新启动)。
要启用它(完成后应该重新打开):
csrutil enable