루트 일 때 허용되지 않는 작업-El Capitan (루트리스 비활성화)


236

OS X El Capitan에서 / usr / bin 으로 무언가를 이동하려고합니다 . 다음 명령을 사용하여 rootless를 비활성화 sudo nvram boot-args="rootless=0"; sudo reboot했지만 동일한 오류가 계속 발생합니다.

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

14
왜 클래스 덤프를 / usr / bin에 넣으려고합니까? 지역 추가는 / usr / 지방 / 빈에 속하고 뿌리가이 ... 당신이 거기에 물건을 넣을 수 있습니다
— 고든 데이비슨

1
~ / .bash_profile에 별명을 만들고 / usr / bin을 사용하면 안됩니다
— Warren P

5
클래스 덤프는 프로그래밍에 직접 사용되므로 (역 엔지니어링 도구-프로그래밍에 직접 사용) 닫기 이유가 유효하지 않습니다. 게다가 28 개의 별, 거의 40 개의 질문 공증 및 90 개의 대답 공증은 질문이 유용하다는 것을 의미합니다.
— Vive

클래스 목록을 얻는 데 사용되므로 리버스 엔지니어링?
— marciokoko 2016 년

답변:


355

Nvm. 이 문제가있는 다른 사람은 Mac을 재부팅하고 부팅 할 때 ⌘ + R을 눌러야 합니다. 그런 다음 유틸리티> 터미널 로 이동 하여 다음 명령을 입력하십시오.

csrutil disable
reboot 

이것은 시스템 무결성 보호의 결과입니다. 자세한 내용은 여기를 참조하십시오 .

편집하다

현재하고있는 일을 알고 있고 Linux를 실행하는 데 익숙한 경우 많은 SIP 제한 사항이 완전히 문제가되기 때문에 위의 솔루션을 사용해야합니다 .

그러나 어설프게 / noob / "poweruser" 이고 자신이하는 일을 모르는 경우 이는 매우 위험 할 수 있으며 아래 답변을 사용 하는 것이 좋습니다 .


2
@Chris, CMD + R로 다시 재부팅하고 터미널을 열고 실행해야 csrutil enable; reboot합니다. 불행히도 정상 모드에서는 명령이 작동하지 않습니다.
— Alexander Kachkaev

7
@AlexanderKachkaev Yep, 내가 한 일입니다. 변경 사항을 수행 한 후에 다시 활성화 해야한다고 지적하고 싶었습니다 ! 그렇지 않으면 시스템 무결성 보호가 영구적으로 비활성화되어 심각한 문제가 발생할 수 있습니다.
— Chris

9
제거 / 수정해서는 안되는 것을 제거 / 수정하는 경우에만 심각한 문제가 발생합니다. 다시 말해서, 당신이하고있는 일을 안다면 그것을 사용하지 않는 것이 안전합니다.
— Clintm

16
리눅스에서 실행하는 사람이라면 누구나 이것을 사용하지 않는 것이 좋습니다. 그것은 엉덩이에 완전한 고통입니다.
— mschuett

3
@Chris 차에 치지 않도록 사무실 의자에 몸을 맡기는 것은 의미가 없습니다. 다시 말해서 ... 길을 건너기 전에 두 가지 방법을 모두 알고 있다면 완벽하게 안전하지 않습니다. 의자에 몸을
— 맡기다

254

올바른 해결책은 복사 또는 설치 /usr/local/bin하지 않는 것입니다. /usr/bin이것은 SIP (System Integrity Protection) 때문 입니다. SIP는 /usr/bin읽기 전용이지만 /usr/local읽기 / 쓰기로 남습니다 .

SIP 는 루트 액세스 권한을 얻는 맬웨어에 대해 다른 보호 계층을 추가하므로 위의 답변에 명시된대로 SIP 를 비활성화해서는 안됩니다. 다음 은 SIP의 기능 및 유용한 이유에 대한 완전한 설명입니다.

이 답변 에서 제안한대로 SIP (루트리스 모드)를 비활성화해서는 안됩니다. " 루트리스 모드 를 비활성화하지 않는 것이 좋습니다. 가장 좋은 방법은"/ usr / local "에만 사용자 정의 항목을 설치하는 것입니다."


8
이것은 내 문제를 해결했습니다. 링크 주셔서 감사합니다! 회복 모드에서 근절하거나 무능하게하는 것은 매우 위험 해 보였습니다! 다행 이네요.
— caokey

1
이것은 매우 나를 위해 트릭을하지 않았다 - 나는 (예, 내 경우에 대한) 약간의 행운이 별명을 가지고 java에 /usr/local/bin/java이 대답에서 알 수 있듯이 내가 그 폴더에서 해당 링크를 만든 후, 내 bashrc에 별칭이다.
— Eli Albert

이 답변은 내 문제를 완벽하게 해결했습니다. 시스템을 수정하거나 재부팅 할 필요가 없으므로 허용되는 답변이어야합니다.
— Stephan

그래서, 이것에 rm아무 것도 남기지 /usr/bin/않습니까? SIP에는 그 목적이 있지만 특정 실행 파일 하나를 제거하고 싶습니다.
— 브래드 솔로몬

1
나는 /usr/local/bin내 경로에 있고 openssl 1.0.2n은 올바르게 심볼릭 링크되어 /usr/local/bin/openssl있지만 할 때마다 which openssl여전히 /usr/bin/openssl이전 OpenSSL 0.9.8zh 14 Jan 2016버전을 보여줍니다 . 시스템 /usr/local/bin/openssl이 다른 시스템을 선호하도록하려면 어떻게해야 합니까?
— Francisc0

15

당신이 통제하고 싶다면 /usr/bin/

시스템을 재부팅해야합니다 :

부팅 사운드 직후 Command-R을 길게 눌러 복구 시스템으로 부팅하십시오.

유틸리티 메뉴를 클릭하고 터미널을 선택하십시오

csrutil disable을 입력하고 Enter 키를 누릅니다

 메뉴를 클릭하고 다시 시작을 선택하십시오.

변경 사항을 커밋 한 후에는 SIP를 다시 활성화하십시오! 시스템을 보호하는 데 많은 도움이됩니다. (유형을 제외한 위의 단계 : csrutil enable)


0

"csrutil disabled"를 호출 한 후에도 명령이 작동하지 않으면 터미널에서 "sudo"를 사용하십시오 (예 :

sudo mv geckodriver /usr/local/bin

그리고 작동해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.