시스템 무결성 보호
1. 개요
Apple 고객지원 홈페이지의 'Mac의 시스템 무결성 보호'에 대한 설명 페이지
루트리스(rootless) 혹은 SIP(System integrity protection, 시스템 무결성 보호)라고 하며, OS X El Capitan과 iOS 9에 적용된 기술이다.
2. 상세
일반적인 Unix 운영체제의 경우 rm -rf /를 하면 시스템 전체가 날아간다.[1] 유닉스 기반인 macOS도 이를 피해갈 수 없어서 rm -rf / 명령어로 모든 걸 날릴 수 있었다. 그러나, 10.11 들어서 root를 엿먹이는 루트리스(rootless) 혹은 시스템 무결성 보호라는 시스템이 도입되었다.
간단하게, 무결성 보호는 다음과 같은 시스템 파일들을 '''루트'''계정을 써도 못 건든다. Apple에서 커널에다가 아예 박아놔서 Root가 와도 못 건드는 것. 거기다가 이 파일들은 무결성 보호가 켜져 있을 경우 Apple 소프트웨어 업데이트와 연계되어 새로이 업데이트 된다. 루트가 와도 못 건드는 게 아니라, 루트리스는 SELinux 처럼 구동한다. 즉, 접근 권한이 없는 놈들은 무조건 차단. 여기엔 당연히 루트 계정도 포함된다. 그러니까 일반 사용자 입장에선 그냥 놔둬도 상관 없고, 아예 잘못된 실수를 할 수도 없는 상황이 도래했다. 거기다가 이런 보호를 받는 프로그램의 경우 코드 인젝션도 불가능하다. 그래서 이런 프로그램에 관련하던 몇몇 개발자들은 손 털고 나가기도 하였다.
3. 적용 대상
다음은 시스템 무결성 보호가 적용되는 디렉터리 목록이다.
- /System
- /usr
- /sbin
- /bin
- OS X에 사전 설치된 앱 [2]
- /Application
- /Library
- /usr/local [3]
4. 해제 방법
해제 방법이 있긴 한데 웬만해서 건드리지 않는 것이 좋다. 굳이 끄고 싶다면 복구 파티션[4] 에서 다음과 같은 명령으로 끌수 있다. 만약 다시 켜고 싶으면 뒤에 disable 대신 enable을 적으면 된다. 켤 때는 복구 파티션 상태가 아니여도 일반적인 터미널에서도 켤 수 있다.
csrutil disable
5. 여담
iOS9 출시 전 루트리스가 도입되면 탈옥이 불가능해질것이라는 예상이 들끓었으나, 이미 Pangu 팀의 iOS 9.0 ~ 9.0.2 탈옥툴이 나온 상태로 iOS9 도 탈옥이 가능하다는 것이 증명되었다.
macOS 10.13 하이 시에라에 와서는 이 기능이 더욱더 확장되었다곤 하나, 실제 머신에서 rm -rf /를 구동해본 결과 남는거 하나 없이 전부 날아갔다고 한다.
'rootless'라는 단어는 안드로이드에서 글자 그대로 루팅#s-2 없이 사용 가능한 유틸리티를 말할 때도 쓰인다. 이 문서에서 다루는 대상과는 관계가 없으니 헷갈리지 말자.