Sudo nie może utworzyć pliku w / usr / bin w El Capitan

14

Uaktualniłem do El Capitan wczoraj i wszystko było dobrze do niedawna, kiedy zauważyłem, że nie mogę napisać niczego (z sudo ofc) na / usr / bin, gdy próbowałem zainstalować phpbrew.

Co może być tego przyczyną i jak go rozwiązać?

wprowadź opis zdjęcia tutaj

sushil
źródło
OS X El Capitan jest bezrootowy. Funkcję tę można wyłączyć z partycji odzyskiwania.
fd0

Odpowiedzi:

17

Od OSX 10.11 Apple wzmocniło system bezpieczeństwa. Firma Apple, zwana ochroną integralności systemu , blokuje się:

/System
/sbin
/usr (with the exception of /usr/local subdirectory)

Aby wyłączyć tę funkcję bezpieczeństwa, musisz ponownie uruchomić komputer i przytrzymać CMD+Rprzy starcie rozruchu w trybie odzyskiwania OS X.

Następnie OS X Utilities > Terminal

Wpisz polecenie csrutil disable; reboot

Twój komputer uruchomi się ponownie. Zobaczysz komunikat potwierdzający dezaktywację.

Aby zweryfikować status typu CRS csrutil status

Ragnar
źródło
1
Wyłączyłem i nadal nie mogę nic robić:/Users/Rob$ csrutil status System Integrity Protection status: disabled. /Users/Rob$ touch /usr/bin/yes touch: /usr/bin/yes: Permission denied
Roberto,
Spróbuj z sudo.
Ragnar
W większości przypadków lepiej jest zainstalować lokalne dostosowania w / usr / local (np. / Usr / local / bin zamiast / bin lub / usr / bin). Po to jest i tak było od dawna. Jeśli to możliwe, zalecam stosowanie tej najlepszej praktyki zamiast wyłączania SIP. Jeśli naprawdę musisz wprowadzić zmiany w ograniczonej lokalizacji, najlepiej wyłączyć SIP, wprowadzić zmiany, a następnie natychmiast ponownie włączyć SIP za pomocą csrutil enable(w trybie odzyskiwania).
Gordon Davisson,
3

Jak wspomniano Ragnar , /usrkatalog jest zablokowany przez system, z wyjątkiem /usr/local. Następnie, jeśli pozwala na to Twój scenariusz, polecam dodanie linku symbolicznego /usr/local/bin. Jeśli nie masz ścisłych wymagań dotyczących używania /usr/bin, jest to jeden ze sposobów obejścia błędu „Operacja niedozwolona”.

Gustavo Straube
źródło
2

Można sprawdzić, czy określony plik lub katalog jest ograniczony przez System Integrity Protection (SIP) OSX / Rootless, wyświetlając flagi plików przy użyciu -Oopcji ls (np. Aby zobaczyć, które katalogi w / są ograniczone):

ls -Ol /

Katalogi lub pliki kontrolowane przez SIP są oznaczone jako „ograniczone”.

Pełne informacje znajdują się w odpowiedziach na to pytanie dotyczące SIP / rootless.

Pierz
źródło