Nie można utworzyć dowiązania symbolicznego w / usr / bin nawet jako sudo

101

Kiedy próbuję dowiązać symbolicznie plik binarny w moim folderze / usr / bin, pojawia się komunikat Operation not allowed:

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

Nawet jako sudo otrzymuję ten błąd.

egidra
źródło
Jaki jest Twój 1.OS 2. Dystrybucja 3. Proszę o system plików?
Rany Albeg Wein
Mac OSX El Capitan
10.11.4
1
Czy próbowałeś wykonać następujące czynności: stackoverflow.com/questions/32659348/… ?
Rany Albeg Wein

Odpowiedzi:

157

Dlaczego nie mogę utworzyć linku do /usr/bin?

Nowa funkcja ochrony integralności systemu El Capitan zapobiega zmianom w kilku podstawowych częściach OS X, w tym większości /usr/, nawet przez roota.

Jak mogę nadal dodawać pliki wykonywalne do mojej ścieżki?

/usr/localZamiast tego należą do nich lokalne dostosowania, takie jak to, co robisz . Ścieżka /usr/local/binnie istnieje domyślnie, ale możesz ją utworzyć i umieścić w niej własne pliki binarne (i dowiązania symboliczne):

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

Zauważ, że chociaż /usr/local/bindomyślnie nie istnieje, znajduje się w domyślnej PATH, więc gdy tylko ją utworzysz, będzie przeszukiwana pod kątem poleceń.

Wyłączanie SIP

Możliwe jest również wyłączenie Ochrony integralności systemu, ale ogólnie najlepiej jest pozostawić ją włączoną i dostosować ją w bardziej odpowiednich lokalizacjach. Pytanie dotyczące Apple Stack Exchange zawiera więcej szczegółów na ten temat: Czym naprawdę jest funkcja Rootless w El-Captain? .

Gordon Davisson
źródło
18

Utworzyłem dowiązanie symboliczne do Sublime Text 3 w systemie Mac OS High Sierra jako

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

Próbowałem również utworzyć dowiązanie symboliczne w „/ usr / bin” i otrzymywałem operację niedozwoloną.

Następnie utworzyłem dowiązanie symboliczne w „/ usr / local / bin” i nie było błędu. Dowiązanie symboliczne działa dobrze. Po prostu upewnij się, że w ścieżce znajduje się „/ usr / local / bin”.

Wygląda więc na to, że dostęp do „/ usr / bin” jest ograniczony.

Vineet Sharma
źródło
7

Ponowne uruchomienie systemu -> długie wciśnięcie Cmd + R . wybierz terminal z menu narzędziowego wpisz następujące polecenie csrutil wyłącz zamknij terminal i zrestartuj system.

James
źródło
9
Spowoduje to wyłączenie ochrony integralności systemu. Prawdopodobnie najlepiej zamiast tego znaleźć inne, bezpieczniejsze rozwiązanie.
MattSidor
9
Osobiście uważam, że to właściwe rozwiązanie. Nie widzę powodu, dla którego system operacyjny miałby blokować mi tworzenie dowiązań symbolicznych w tym katalogu lub w dowolnym katalogu jako 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 

jeśli nie możesz utworzyć dowiązania symbolicznego z powodu problemu z uprawnieniami, będzie to spowodowane "csrutil". Po wyłączeniu csrutil możesz utworzyć dowiązanie symboliczne. Wykonaj następujące kroki, aby wyłączyć CSRUtill:

Uruchom ponownie komputer Mac. Przed uruchomieniem OS X przytrzymaj Command-R i przytrzymaj, aż zobaczysz ikonę Apple i pasek postępu. Wydanie. Spowoduje to uruchomienie odzyskiwania. Z menu Narzędzia (na górnym pasku) wybierz Terminal. Po wyświetleniu monitu wpisz dokładnie następujące polecenie, a następnie naciśnij klawisz Return: csrutil disable Terminal powinien wyświetlić komunikat, że SIP został wyłączony. Z menu  wybierz Uruchom ponownie.

Srima
źródło
-4

Spróbuj sudo sunajpierw uruchomić, a następnie uruchomić polecenie z poziomem głównym.

Dre
źródło
2
Nie rozwiąże to problemu PO. Problem dotyczy ochrony integralności systemu w nowoczesnych systemach MacOS.
cgseller