在root上时不允许操作 - El Capitan(无根禁用)

Mar*_*rke 225 macos osx-elcapitan

我想在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
Run Code Online (Sandbox Code Playgroud)

Mar*_*rke 350

NVM.对于遇到此问题的其他人,您需要重新启动Mac并在启动时按⌘+ R. 然后进入Utilities> Terminal并输入以下命令:

csrutil disable
reboot 
Run Code Online (Sandbox Code Playgroud)

这是系统完整性保护的结果.更多信息在这里.

编辑

如果您知道自己在做什么并且习惯于运行Linux,那么您应该使用上述解决方案,因为许多SIP限制都是完全痛苦的屁股.

但是,如果你是修补匠/ noob /"poweruser"并且不知道你在做什么,这可能非常危险,你最好使用下面的答案.

  • 任何用于在Linux上运行的人都可能希望将此禁用.这是一个完全痛苦的屁股. (15认同)
  • 如果您删除/修改不应删除/修改的内容,则只会导致严重问题.换句话说,如果您知道自己在做什么,那么将其禁用是完全安全的. (9认同)
  • @AlexanderKachkaev是的,这就是我的所作所为.我只是想指出,在执行更改之后,任何人都应该*再次启用它!否则,系统完整性保护将永久禁用,从而导致严重问题. (7认同)
  • @Chris将你自己戴在办公椅上避免被汽车撞伤是没有意义的......换句话说......如果你知道在过马路之前要两面看......这是绝对安全的给自己戴上手铐 (3认同)
  • `csrutil:未能修改系统完整性配置。此工具需要从恢复操作系统执行。` (3认同)
  • @Chris,你需要再次使用CMD + R重新启动,打开终端并运行```csrutil enable; reboot```.不幸的是,该命令在正常模式下不起作用. (2认同)
  • @Clintm这就像说你可以一直使用root用户,因为如果你不知道自己在做什么,你只会搞砸你的系统 (2认同)
  • 这可能是解决根本问题的正确答案,但正如其他答案所述,这不是推荐的方式.另一个答案值得更多的信任. (2认同)

har*_*man 237

正确的办法是复制或安装到/usr/local/bin没有/usr/bin.这是由于系统完整性保护(SIP) .SIP使其成为/usr/bin只读,但保留/usr/local为读写.

不应该像上面的答案中所述禁用SIP,因为它增加了另一层保护,防止恶意软件获得root访问权限.以下是对SIP的作用以及它有用的原因的完整说明.

本回答所示,不应禁用SIP(无根模式)"不建议禁用无根模式!最佳做法是仅将自定义内容安装到"/ usr/local".

  • 这解决了我的问题.谢谢你的链接!在恢复模式下无根或禁用的东西似乎超级危险!很高兴我找到了这个. (8认同)

Ell*_*Yap 15

如果你想控制 /usr/bin/

您需要重启系统:

在启动声音之后,按住Command-R启动进入恢复系统

单击Utilities菜单,然后选择Terminal

键入csrutil disable并按回车键

单击菜单,然后选择重新启动

提交更改后,请务必重新启用SIP!它可以保护您的系统.(与上面的步骤相同,但类型为:csrutil enable)