Próbuję przenieść coś do / usr / bin na OS X El Capitan. Wyłączyłem rootless za pomocą następujących poleceń:, sudo nvram boot-args="rootless=0"; sudo reboot
ale ciągle pojawia się ten sam błąd:
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
źródło
źródło
Odpowiedzi:
Nvm. Dla każdego, kto ma ten problem, musisz ponownie uruchomić komputer Mac i naciśnij klawisze ⌘ + R podczas uruchamiania. Następnie przejdź do Narzędzia> Terminal i wpisz następujące polecenia:
Jest to wynik ochrony integralności systemu. Więcej informacji tutaj .
EDYTOWAĆ
Jeśli wiesz, co robisz i jesteś przyzwyczajony do pracy z Linuksem, powinieneś użyć powyższego rozwiązania, ponieważ wiele ograniczeń SIP jest kompletnym problemem.
Jednak jeśli jesteś majstrującym / noob / „poweruser” i nie wiesz, co robisz, może to być bardzo niebezpieczne i lepiej jest skorzystać z poniższej odpowiedzi .
źródło
csrutil enable; reboot
. Polecenie nie działa niestety w trybie normalnym.Poprawnym rozwiązaniem jest skopiowanie lub zainstalować
/usr/local/bin
nie/usr/bin
.To jest spowodowane integralności systemu ochrony (SIP) . SIP sprawia, że/usr/bin
tylko do odczytu, ale pozostawia/usr/local
jako do odczytu i zapisu.SIP nie powinien być wyłączany, jak stwierdzono w powyższej odpowiedzi, ponieważ dodaje kolejną warstwę ochrony przed złośliwym oprogramowaniem uzyskującym dostęp do roota. Oto pełne wyjaśnienie tego, co robi SIP i dlaczego jest przydatne.
Jak sugerowano w tej odpowiedzi, nie należy wyłączać SIP (tryb bez rootowania) „Nie zaleca się wyłączania trybu bez rootowania! Najlepszą praktyką jest instalowanie niestandardowych plików tylko w„ / usr / local ”.”
źródło
java
do/usr/local/bin/java
moich aliasów bashrc, po tym, jak utworzyłem odpowiedni link w tym folderze, jak sugeruje ta odpowiedź.rm
niczego drogi/usr/bin/
? Rozumiem, że SIP ma swój cel, ale chcę usunąć jeden konkretny plik wykonywalny./usr/local/bin
na swojej ścieżce i openssl 1.0.2n jest poprawnie dowiązany symbolicznie,/usr/local/bin/openssl
ale za każdym razem, gdywhich openssl
to robię , nadal pokazuje,/usr/bin/openssl
któraOpenSSL 0.9.8zh 14 Jan 2016
wersja jest starsza . Jak sprawić, aby mój system wolał ten/usr/local/bin/openssl
od drugiego?Jeśli chcesz przejąć kontrolę
/usr/bin/
Musisz ponownie uruchomić system:
Zaraz po dźwięku rozruchu naciśnij i przytrzymaj klawisz Command-R, aby uruchomić system odzyskiwania
Kliknij menu Narzędzia i wybierz Terminal
Wpisz csrutil wyłącz i naciśnij klawisz Return
Kliknij menu i wybierz Uruchom ponownie
Po zatwierdzeniu zmian ponownie włącz SIP! Robi dużo, aby chronić swój system. (Te same kroki, co powyżej, z wyjątkiem typu: csrutil enable)
źródło
Jeśli po wywołaniu „csrutil wyłączony” nadal twoje polecenie nie działa, spróbuj z „sudo” w terminalu, na przykład:
I powinno działać.
źródło