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.
Odpowiedzi:
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/local
Zamiast tego należą do nich lokalne dostosowania, takie jak to, co robisz . Ścieżka/usr/local/bin
nie istnieje domyślnie, ale możesz ją utworzyć i umieścić w niej własne pliki binarne (i dowiązania symboliczne):Zauważ, że chociaż
/usr/local/bin
domyś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? .
źródło
Utworzyłem dowiązanie symboliczne do Sublime Text 3 w systemie Mac OS High Sierra jako
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.
źródło
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.
źródło
sudo
.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.
źródło
Spróbuj
sudo su
najpierw uruchomić, a następnie uruchomić polecenie z poziomem głównym.źródło