루트 일 때 허용되지 않는 작업-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.