Apple hat mit OS X 10.11, El Capitan, den Systemintegritätsschutz eingeführt , der auch als "rootless" bezeichnet wird. Ich verstehe, dass dies ein Schritt zum allgemeinen Schutz vor Malware ist, aber als Entwickler benötige ich Schreibzugriff auf einige der Dateien, die gesperrt werden.
Wie deaktiviere ich diesen Schutz?
Antworten:
Die Dokumentation von Apple befasst sich mit dem Deaktivieren von SIP, Informationen zum Systemintegritätsschutz auf Ihrem Mac und dem Konfigurieren des Systemintegritätsschutzes .
Ein Artikel auf lifehacker.com listet diese Schritte auf:
Sie können überprüfen, ob eine Datei oder ein Ordner eingeschränkt ist, indem Sie diesen
ls
Befehl mit dem Großbuchstaben O (und nicht mit Null 0) absetzen, um das Langlisten-Flag zu ändern:Suchen Sie nach dem eingeschränkten Text, um anzugeben, wo SIP erzwungen wird.
Standardmäßig (= SIP aktiviert) sind die folgenden Ordner eingeschränkt (siehe Apple Support-Seite ):
... und die folgenden Ordner sind kostenlos:
quelle
ls -lO /usr/local
keine Einschränkung. Ich habe auch/usr/local/
rekursiv chownd . Aber ich sehe immer wieder, wie Root das Eigentum an Homebrew übernimmt/usr/local/bin
und/usr/local/share
welche Auswirkungen dies hat. Ist das auch die Arbeit von SIP?/usr/local
keine Einschränkung besteht, können Sie Berechtigungen "unterhalb" dieses Verzeichnisses problemlos korrigieren . Homebrew empfiehlt tatsächlich die Ausführungsudo chown -R $(whoami) /usr/local
(während Sie als Administrator angemeldet sind), um Berechtigungsprobleme zu beheben./usr/local
jetzt die Berechtigungen richtig eingestellt sind.Sie können SIP deaktivieren, indem Sie auf Recovery HD booten und den folgenden Befehl ausführen:
Es ist auch möglich, den SIP-Schutz zu aktivieren und bestimmte Aspekte davon zu deaktivieren, indem dem
csrutil enable
Befehl ein oder mehrere Flags hinzugefügt werden . Alle müssen von Recovery gebootet werden, um sie einzustellen:Aktivieren Sie SIP und erlauben Sie die Installation von nicht signierten Kernel-Erweiterungen
Aktivieren Sie SIP und deaktivieren Sie den Dateisystemschutz
Aktivieren Sie SIP und deaktivieren Sie die Debugging-Einschränkungen
Aktivieren Sie SIP und deaktivieren Sie DTrace-Einschränkungen
Aktivieren Sie SIP und deaktivieren Sie Einschränkungen beim Schreiben in den NVRAM
Ich habe auch einen Beitrag mit weiteren Informationen zu SIP:
Systemintegritätsschutz - Hinzufügen einer weiteren Ebene zum Apple-Sicherheitsmodell
quelle
csrutil: failed to modify system integrity configuration. This tool needs to be executed from the Recovery OS.
Wenn das Ziel darin besteht, den Systemintegritätsschutz wirklich nur zu deaktivieren, ist das Booten der Recovery HD-Partition, wie in den anderen Antworten hier empfohlen, über Command+ rbeim Booten nicht der schnellste Weg.
Sie können den Einzelbenutzermodus-Start mit dem Wiederherstellungs-HD-Start in einer undokumentierten Startschlüsselkombination kombinieren:
Dies bringt Sie nur in die minimale Umgebung, die dafür direkt benötigt wird .
quelle
Es wäre sicherer, das
/etc/paths
so zu modifizieren , dass/usr/local/bin
es lediglich vorher gehtusr/bin
. Auf diese Weise können Sie Ihre Entwicklungsarbeit innerhalb von erledigen,/usr/local/bin
ohne SIP deaktivieren zu müssen.Neuinstallationen des Betriebssystems werden
/etc/paths
seit El Capitan auf diese Weise ausgeführt. Wenn Sie jedoch ein Upgrade des Betriebssystems von Yosemite oder einer früheren Version durchführen, müssen Sie die Pfadreihenfolge manuell ändern.quelle
usr/bin
. Da SIP dies jetzt verhindert, sollten Programme installiert werdenusr/local/bin
, die nicht durch SIP eingeschränkt sind. Alsusr/local/bin
erstes können Benutzer Programme ausführen, ohne den absoluten Pfad zum Programm eingeben zu müssen. Macht das Sinn? Bist du über etwas anderes verwirrt?/usr/bin
... aber ich denke, ich hätte fragen sollen: "Wie beantwortet das die Frage von OP?" Ich war ursprünglich davon ausgegangen, dass es in irgendeiner Weise geschah und dass ich einfach keine Verbindung aufbaute. Aber jetzt bin ich sehr zweifelhaft, ob es irgendeinen Zusammenhang gibt.Wenn Sie nur auf / usr / local zugreifen möchten, besuchen Sie diese Seite: https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/El_Capitan_and_Homebrew.md
Die Idee ist , SIP vorübergehend zu deaktivieren, indem
csrutil disable
Sie/usr/local
chflags hinzufügen und verwenden, um dieses Verzeichnis auf uneingeschränkt zu setzenund dann wieder mit SIP aktivieren
csrutil enable
.Wenn dies
/usr/local
zum Zeitpunkt Ihres Upgrades bereits vorhanden ist, ist auch das oben Genannte nicht erforderlich. Sie können einfach laufenquelle
Read-only file system
Wenn Sie nicht in die Wiederherstellungspartition gelangen können
csrutil disable
, um SIP auszuführen (zu deaktivieren ), versuchen Sie, die Startargumente mit einemnvram
Befehl festzulegen , zWenn Sie jedoch den folgenden Fehler haben:
dann klappt es nicht. Sie müssen es dennoch im Wiederherstellungs- / abgesicherten Modus starten.
Sehen:
quelle
nvram: Error setting variable - 'boot-args': (iokit/common) not permitted
Ich habe nicht genug Reputation, um dies als Kommentar zum obigen github Homebrew 404-Link hinzuzufügen. Die Wayback-Maschine hat es immer noch:
http://web.archive.org/web/20160117204214/https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/El_Capitan_and_Homebrew.md
quelle