Apple은 OS X 10.11 인 El Capitan과 함께 "루트리스"라고도하는 시스템 무결성 보호 를 도입했습니다 . 나는 이것이 맬웨어에 대한 일반적인 보호 단계라는 것을 이해하지만 개발자는 잠그는 일부 파일에 대한 쓰기 권한이 필요합니다.
이 보호 기능을 어떻게 비활성화합니까?
Apple은 OS X 10.11 인 El Capitan과 함께 "루트리스"라고도하는 시스템 무결성 보호 를 도입했습니다 . 나는 이것이 맬웨어에 대한 일반적인 보호 단계라는 것을 이해하지만 개발자는 잠그는 일부 파일에 대한 쓰기 권한이 필요합니다.
이 보호 기능을 어떻게 비활성화합니까?
답변:
Apple의 설명서는 SIP 비활성화, Mac의 시스템 무결성 보호 정보 및 시스템 무결성 보호 구성 에 대해 설명합니다 .
lifehacker.com의 기사 에는 다음 단계가 나열되어 있습니다.
- 컴퓨터를 재시동하고 화면에 Apple 로고가 나타날 때까지 Command+를 길게 눌러 Mac을 복구 모드로 재부팅하십시오 R.
- 유틸리티> 터미널을 클릭하십시오.
- 터미널 창에서 입력하고을
csrutil disable
누릅니다 Enter.- Mac을 재시동하십시오.
ls
긴 목록 플래그를 수정하기 위해 대문자 O (0이 아님)를 사용 하여이 명령을 실행하여 파일 또는 폴더가 제한되어 있는지 확인할 수 있습니다 .
ls -lO /System /usr
SIP가 적용되는 위치를 나타내는 제한된 텍스트를 찾으십시오 .
기본적으로 (= SIP 사용) 다음 폴더가 제한됩니다 ( Apple 지원 페이지 참조 ).
/System
/usr
/bin
/sbin
Apps that are pre-installed with OS X
... 및 다음 폴더는 무료입니다 :
/Applications
/Library
/usr/local
ls -lO /usr/local
것이 제한으로 표시되지 않는 것을 알 수 있습니다 . 나는 또한 /usr/local/
재귀 적으로 chownd했습니다 . 그러나 나는 루트가 소유권을 가지게 /usr/local/bin
되며 /usr/local/share
홈 브루에 영향을 미치는 것을 계속보고 있습니다 . 이것은 SIP의 작품입니까?
/usr/local
제한되지 않는 한이 디렉토리 아래의 모든 권한을 쉽게 수정할 수 있습니다. Homebrew는 실제로 sudo chown -R $(whoami) /usr/local
권한 문제를 해결하기 위해 (관리자 사용자로 로그인 한 상태에서) 실행 하는 것이 좋습니다 .
/usr/local
이제 권한이 올바르게 설정되었는지 확인했습니다 .
Recovery HD 로 부팅 하고 다음 명령을 실행하여 SIP를 비활성화 할 수 있습니다 .
csrutil disable
csrutil enable
명령에 하나 이상의 플래그를 추가하여 SIP 보호를 활성화하고 측면을 선택적으로 비활성화 할 수도 있습니다 . 설정하려면 복구에서 부팅해야합니다.
SIP 사용 및 서명되지 않은 커널 확장 설치 허용
csrutil enable --without kext
SIP 활성화 및 파일 시스템 보호 비활성화
csrutil enable --without fs
SIP 활성화 및 디버깅 제한 비활성화
csrutil enable --without debug
SIP 활성화 및 DTrace 제한 비활성화
csrutil enable --without dtrace
NVRAM에 쓸 때 SIP를 활성화하고 제한을 비활성화합니다
csrutil enable --without nvram
SIP에 대한 자세한 정보가있는 게시물도 있습니다.
csrutil: failed to modify system integrity configuration. This tool needs to be executed from the Recovery OS.
목표가 실제로 시스템 무결성 보호를 비활성화하는 것이라면 부팅시 Command+ r를 통한 다른 답변에서 권장하는 것처럼 복구 HD 파티션으로 부팅하는 것이 가장 빠른 방법 은 아닙니다 .
문서화되지 않은 시작 키 조합에서 단일 사용자 모드 부팅을 복구 HD 부팅과 결합 할 수 있습니다.
이것은 단지이에 필요한 최소한의 환경을 얻는다 직접 .
단지 이전의 수정 /etc/paths
을하는 /usr/local/bin
것이 더 안전 할 것 usr/bin
입니다. 그렇게하면 /usr/local/bin
SIP를 비활성화하지 않고도 개발 작업을 수행 할 수 있습니다 .
/etc/paths
El Capitan 이후로 OS를 새로 설치하면 이 방법으로 주문할 수 있지만 Yosemite 또는 이전 버전에서 OS를 업그레이드하는 경우 경로 순서를 수동으로 수정해야합니다.
usr/bin
. SIP는이를 방지하기 위해 프로그램을에 설치해야합니다 usr/local/bin
. SIP에 의해 제한되지 않습니다. 놓음으로써 usr/local/bin
첫째, 사용자는 프로그램의 절대 경로를 입력 할 필요없이 프로그램을 실행할 수 있습니다. 이게 말이 돼? 다른 것에 대해 혼란 스러우십니까?
/usr/bin
왔지만 ... 내가 물어야 할 것은 "이것이 OP의 질문에 어떻게 대답 하는가"라고 생각합니다. 나는 원래 어떤 식 으로든 연결을 하지 않았다고 가정했습니다 . 그러나 지금 나는 그것이 어떤 관련이 있는지 의심 스럽습니다.
/ usr / local에 액세스하기 만하면이 페이지를 살펴보십시오 : https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/El_Capitan_and_Homebrew.md
아이디어는 , add 를 사용 하여 SIP 를 일시적으로 비활성화하고 chflags를 사용하여 해당 디렉토리를 무제한으로 설정하는 것입니다csrutil disable
/usr/local
sudo mkdir /usr/local && sudo chflags norestricted /usr/local && sudo chown -R $(whoami):admin /usr/local
을 사용하여 SIP를 다시 활성화하십시오 csrutil enable
.
/usr/local
업그레이드 시점에 이미 존재하는 경우 위의 사항조차 필요하지 않습니다. 당신은 단순히 실행할 수 있습니다
sudo chown -R $(whoami):admin /usr/local
Read-only file system
복구 파티션 을 실행 csrutil disable
하여 SIP 를 비활성화 할 수없는 경우 다음 nvram
명령을 사용 하여 boot args를 설정하십시오.
sudo nvram boot-args="rootless=0"
그러나 다음과 같은 오류가 발생하면
nvram : 변수 설정 오류- 'boot-args': (iokit / common) 허용되지 않습니다
그런 다음 작동하지 않습니다. 여전히 복구 / 안전 모드로 부팅해야합니다.
보다:
nvram: Error setting variable - 'boot-args': (iokit/common) not permitted
위의 github Homebrew 404 링크에 주석으로 추가 할만 큼 평판이 없습니다. 웨이 백 머신에는 여전히 다음이 있습니다.