Sudo无法在El Capitan的/ usr / bin中创建文件


14

我昨天升级到El Capitan,直到最近发现我在尝试安装phpbrew时都无法在/ usr / bin上写任何东西(使用sudo ofc)时,一切都很好。

是什么原因引起的,以及如何解决它?

在此处输入图片说明


OS X El Capitan是无根的。可以从恢复分区禁用该功能。
fd0

Answers:


17

自OSX 10.11起,Apple加强了安全系统。被称为系统完整性保护的 Apple锁定了:

/System
/sbin
/usr (with the exception of /usr/local subdirectory)

要禁用此安全功能,您必须重新引导计算机并CMD+R在启动时按住以引导进入OS X恢复模式。

然后 OS X Utilities > Terminal

输入命令 csrutil disable; reboot

您的计算机将重新启动。您将看到有关停用的确认消息。

验证CRS类型的状态 csrutil status


1
我禁用了,它仍然不允许我做任何事情:/Users/Rob$ csrutil status System Integrity Protection status: disabled. /Users/Rob$ touch /usr/bin/yes touch: /usr/bin/yes: Permission denied
罗伯托

尝试一下sudo
拉格纳

在大多数情况下,最好将本地自定义安装到/ usr / local中(例如/ usr / local / bin而不是/ bin或/ usr / bin)。这就是它的用途,并且这种情况已经存在很长时间了。如果可能的话,我建议您遵循这种最佳做法,而不要禁用SIP。如果确实需要在受限制的位置进行更改,则最好禁用SIP,进行更改,然后立即使用csrutil enable(在恢复模式下)重新启用SIP 。
戈登·戴维森,


2

可以通过使用-Ols选项列出文件标志来验证特定文件或目录是否受到OSX的系统完整性保护(SIP)/无根目录的限制(例如,查看/受限制的目录):

ls -Ol /

SIP控制的目录或文件显示为“受限制”。

有关SIP /无根的问题的答案中有完整的详细信息。

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.