Sudo kann keine Datei in / usr / bin in El Capitan erstellen

14

Ich habe gestern ein Upgrade auf El Capitan durchgeführt und alles war gut, bis ich vor kurzem bemerkte, dass ich nichts (mit sudo ofc) auf / usr / bin schreiben kann, als ich versuchte, phpbrew zu installieren.

Was könnte dies verursachen und wie kann es behoben werden?

Geben Sie hier die Bildbeschreibung ein

Sushil
quelle
OS X El Capitan ist wurzellos. Die Funktion kann auf der Wiederherstellungspartition deaktiviert werden.
fd0

Antworten:

17

Seit OSX 10.11 hat Apple das Sicherheitssystem verstärkt. Genannt Systemintegrität Schutz sperrt Apple - unten:

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

Um diese Sicherheitsfunktion zu deaktivieren, müssen Sie Ihren Computer neu CMD+Rstarten und beim Start gedrückt halten, um den OS X-Wiederherstellungsmodus zu starten.

Dann OS X Utilities > Terminal

Geben Sie den Befehl ein csrutil disable; reboot

Ihr Computer wird neu gestartet. Sie sehen eine Bestätigungsmeldung zur Desaktivierung.

Zum Überprüfen des Status des CRS-Typs csrutil status

Ragnar
quelle
1
Ich habe deaktiviert und es erlaubt mir immer noch nichts zu tun:/Users/Rob$ csrutil status System Integrity Protection status: disabled. /Users/Rob$ touch /usr/bin/yes touch: /usr/bin/yes: Permission denied
Roberto
Versuchen Sie es mit sudo.
Ragnar
In den meisten Fällen ist es besser, lokale Anpassungen in / usr / local zu installieren (z. B. / usr / local / bin anstelle von / bin oder / usr / bin). Dafür ist es da, und das ist schon lange so. Wenn möglich, würde ich empfehlen, diese bewährte Methode zu befolgen, anstatt SIP zu deaktivieren. Wenn Sie wirklich Änderungen an einem eingeschränkten Speicherort vornehmen müssen, deaktivieren Sie am besten SIP, nehmen Sie die Änderung vor und aktivieren Sie SIP sofort wieder mit csrutil enable(im Wiederherstellungsmodus).
Gordon Davisson
3

Wie von Ragnar erwähnt , wird das /usrVerzeichnis mit Ausnahme von vom System gesperrt /usr/local. Wenn Ihr Szenario dies zulässt, würde ich empfehlen, den symbolischen Link zu hinzuzufügen /usr/local/bin. Wenn Sie keine strengen Anforderungen an die Verwendung haben /usr/bin, können Sie auf diese Weise den Fehler "Vorgang nicht zulässig" umgehen.

Gustavo Straube
quelle
2

Sie können überprüfen, ob eine bestimmte Datei oder ein bestimmtes Verzeichnis durch den System Integrity Protection (SIP) / Rootless von OSX eingeschränkt ist, indem Sie die Dateiflaggen mit der -OOption ls auflisten (z. B. um zu sehen, welche Verzeichnisse in / eingeschränkt sind):

ls -Ol /

Die Verzeichnisse oder Dateien, die von SIP gesteuert werden, werden als "eingeschränkt" angezeigt.

Die Antworten auf diese Frage zu SIP / rootless enthalten alle Details .

Pierz
quelle