Ich versuche, unter OS X El Capitan etwas nach / usr / bin zu verschieben. Ich habe rootless mit den folgenden Befehlen deaktiviert: sudo nvram boot-args="rootless=0"; sudo reboot
aber es wird immer wieder der gleiche Fehler angezeigt:
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
macos
osx-elcapitan
Mark Bourke
quelle
quelle
Antworten:
Nvm. Für alle anderen, die dieses Problem haben, müssen Sie Ihren Mac neu starten und beim Booten ⌘ + R drücken . Gehen Sie dann zu Dienstprogramme> Terminal und geben Sie die folgenden Befehle ein:
Dies ist ein Ergebnis des Systemintegritätsschutzes. Mehr Infos hier .
BEARBEITEN
Wenn Sie wissen, was Sie tun und es gewohnt sind, Linux auszuführen, sollten Sie die oben genannte Lösung verwenden, da viele der SIP- Einschränkungen eine völlige Belastung darstellen.
Wenn Sie jedoch ein Bastler / Noob / "Poweruser" sind und nicht wissen, was Sie tun, kann dies sehr gefährlich sein und Sie sollten die folgende Antwort besser verwenden .
quelle
csrutil enable; reboot
. Der Befehl funktioniert im normalen Modus leider nicht.Die richtige Lösung besteht darin, zu kopieren oder zu installieren, um dies
/usr/local/bin
nicht zu/usr/bin
tun. Dies liegt am System Integrity Protection (SIP) . SIP ist/usr/bin
schreibgeschützt, bleibt jedoch/usr/local
schreibgeschützt.SIP sollte nicht deaktiviert werden, wie in der obigen Antwort angegeben, da es eine weitere Schutzschicht gegen Malware bietet, die Root-Zugriff erhält. Hier finden Sie eine vollständige Erklärung, was SIP tut und warum es nützlich ist.
Wie in dieser Antwort vorgeschlagen, sollte SIP (Rootless-Modus) nicht deaktiviert werden. "Es wird nicht empfohlen, den Rootless-Modus zu deaktivieren. Die beste Vorgehensweise besteht darin, benutzerdefinierte Inhalte nur unter" / usr / local "zu installieren."
quelle
java
zu/usr/local/bin/java
meiner bashrc Aliase, nachdem ich auf den entsprechenden Link in diesem Ordner aus , wie diese Antwort vermuten läßt.rm
nichts zu/usr/bin/
? Ich verstehe, dass SIP seinen Zweck hat, möchte aber eine bestimmte ausführbare Datei entfernen./usr/local/bin
in meinem Pfad und openssl 1.0.2n ist korrekt mit verknüpft,/usr/local/bin/openssl
aber jedes Mal, wenn ich es tuewhich openssl
, wird immer noch/usr/bin/openssl
die ältereOpenSSL 0.9.8zh 14 Jan 2016
Version angezeigt . Wie kann ich mein System dazu bringen, das/usr/local/bin/openssl
eine dem anderen vorzuziehen ?Wenn Sie die Kontrolle übernehmen möchten
/usr/bin/
Sie müssen Ihr System neu starten:
Halten Sie direkt nach dem Startton Befehlstaste-R gedrückt, um das Wiederherstellungssystem zu starten
Klicken Sie auf das Menü Dienstprogramme und wählen Sie Terminal
Geben Sie csrutil disable ein und drücken Sie die Eingabetaste
Klicken Sie auf das Menü und wählen Sie Neu starten
Wenn Sie Ihre Änderungen festgeschrieben haben, müssen Sie SIP wieder aktivieren! Es trägt viel zum Schutz Ihres Systems bei. (Gleiche Schritte wie oben, außer Typ: csrutil enable)
quelle
Wenn Ihr Befehl nach dem Aufruf von "csrutil disabled" immer noch nicht funktioniert, versuchen Sie es mit "sudo" im Terminal, zum Beispiel:
Und es sollte funktionieren.
quelle