Selbst als sudo kann kein Symlink in / usr / bin erstellt werden

101

Wenn ich versuche, eine Binärdatei in meinem Ordner / usr / bin zu verknüpfen, wird der Fehler Operation nicht zulässig angezeigt:

 sudo ln -s /usr/bin/python2.7 /usr/bin/python2
ln: /usr/bin/python2: Operation not permitted

Selbst als Sudo bekomme ich diesen Fehler.

egidra
quelle
Was ist Ihr 1.OS 2.Distribution 3. Dateisystem bitte?
Rany Albeg Wein
Mac OSX El Capitan 10.11.4
egidra
1
Haben Sie Folgendes versucht: stackoverflow.com/questions/32659348/… ?
Rany Albeg Wein

Antworten:

155

Warum kann ich keine Symlink-Verbindung herstellen /usr/bin?

Die neue Systemintegritätsschutzfunktion von El Capitan verhindert Änderungen an mehreren Kernteilen von OS X, einschließlich der meisten /usr/, sogar über Root.

Wie kann ich meinem Pfad noch ausführbare Dateien hinzufügen?

/usr/localStattdessen gehören lokale Anpassungen, z. B. was Sie tun . Der Pfad /usr/local/binist standardmäßig nicht vorhanden, aber Sie können ihn erstellen und benutzerdefinierte Binärdateien (und Symlinks) einfügen:

sudo mkdir -p /usr/local/bin
sudo ln -s /usr/bin/python2.7 /usr/local/bin/python2

Beachten Sie, dass während /usr/local/binstandardmäßig nicht vorhanden, es ist in dem Standardpfad, um so schnell wie Sie es schaffen, wird es für Befehle gesucht werden.

SIP deaktivieren

Es ist auch möglich, den Systemintegritätsschutz zu deaktivieren. Im Allgemeinen ist es jedoch am besten, ihn aktiviert zu lassen und Anpassungen an geeigneteren Orten vorzunehmen. Eine Apple Stack Exchange-Frage enthält weitere Details dazu: Was ist die Rootless-Funktion in El-Captain wirklich? .

Gordon Davisson
quelle
16

Ich habe den symbolischen Link für Sublime Text 3 in Mac OS High Sierra als erstellt

sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/

Ich habe auch versucht, den symbolischen Link in "/ usr / bin" zu erstellen und habe die Operation "Nicht zulässig" erhalten.

Dann habe ich den symbolischen Link in "/ usr / local / bin" erstellt und es gab keinen Fehler. Die symbolische Verknüpfung funktioniert einwandfrei. Stellen Sie einfach sicher, dass sich "/ usr / local / bin" im Pfad befindet.

Es scheint also, dass der Zugriff auf "/ usr / bin" eingeschränkt ist.

Vineet Sharma
quelle
7

Starten Sie das System -> lang drücken cmd + R . Wählen Sie im Menü Dienstprogramme ein Terminal aus. Geben Sie den folgenden Befehl ein: csrutil disable close terminal und starte das System neu.

James
quelle
9
Dadurch wird der Systemintegritätsschutz deaktiviert. Wahrscheinlich am besten, stattdessen eine andere, sicherere Lösung zu finden.
MattSidor
9
Persönlich denke ich, dass dies die richtige Lösung ist. Ich sehe keinen Grund für das Betriebssystem, mich daran zu hindern, Dinge in diesem Verzeichnis oder einem anderen Verzeichnis als zu verknüpfen sudo.
rjhilgefort
0
  1. Create a symbolic link to psql in usr/bin (for mac only)
         command: sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/psql /usr/bin/psql 

Wenn Sie aufgrund eines Berechtigungsproblems keinen symnbolischen Link erstellen können, liegt dies an "csrutil". Nach dem Deaktivieren von csrutil können Sie einen symbollischen Link erstellen. Führen Sie die folgenden Schritte aus, um CSRUtill zu deaktivieren:

Starten Sie Ihren Mac neu. Halten Sie vor dem Start von OS X Command-R gedrückt und halten Sie die Taste gedrückt, bis Sie ein Apple-Symbol und einen Fortschrittsbalken sehen. Freisetzung. Dies startet Sie in die Wiederherstellung. Wählen Sie im Menü Dienstprogramme (in der oberen Leiste) die Option Terminal. Geben Sie an der Eingabeaufforderung genau Folgendes ein und drücken Sie die Eingabetaste: csrutil disable Terminal sollte eine Meldung anzeigen, dass SIP deaktiviert wurde. Wählen Sie im Menü  die Option Neu starten.

Srima
quelle
-3

Versuchen Sie sudo suzuerst, dann den Befehl mit Root-Ebene auszuführen.

Dre
quelle
2
Dadurch wird das OP-Problem nicht behoben. Das Problem hat mit dem Schutz der Systemintegrität auf modernen MacOS-Systemen zu tun.
cgseller