2015/10/04

OS X El Capitan의 Rootless 정책과 Disk Utility에 대하여


이전 글에서 OS X El Capitan Upgrade 후 발생한 문제들에 대해 얘기했는데, 이전 OS X 버전의 Recovery 파티션 두 개를 지워 보려고 하다가 생긴 문제들에 대해서 주로 Disk Utility 사용자 관점에서 정리해 본다. 기본적으로 Disk Utility를 가지고 Recovery 파티션을 지울 수 없었기 때문이다. 이전 글에서도 잠깐 언급했듯이 OS X El Capitan의 새로운 보안 정책인 Rootless(또는 SIP; System Integrity Protection) 때문에 Disk Utility에도 제약이 가해질 수 밖에 없으리란 것은 어느 정도 이해할 수 있지만 본연의 디스크 관리 기능을 제대로 할 수 없다는 것에 대해 왕짜증난다.

Rootless 보안 정책은, 간단히는 root 권한으로도 System의 중요한 설정이나 폴더/파일 들을 건드리지 못한다고 이해하면 되지만, 세부적으로는 매우 복잡한 것 같다. 3rd Party 시스템 관련 앱 개발 회사나 개발자들, 그리고 OS X 서버 사용자들에게는 꽤 부담을 줄 듯하다. 일단, 구글링을 통해 알게된 몇 가지만 정리한다.

Rootless 또는 SIP에 대하여...

Rootless는 com.apple.rootless라는 확장 파일 속성으로 관리하는 것 같고, NVRAM, 프로세스, 폴더, 파일 레벨에서도 통제할 수 있는 듯 하다. 일단, 파일시스템 Protection이 걸려 있는 폴더 들은 /System, /bin, /sbin, /usr(단, /usr/local은 제외) 등 이다. 이 폴더들은 root도 write 권한이 없다. SIP를 관리하는 새로운 Utility가 csrutil이라는 놈이다. OS X Recovery 파티션으로 부팅했을 때에만 SIP를 해제 또는 사용하도록 설정할 수 있다. 다만, 현재 SIP 설정 상태는 언제든지 아래와 같이 터미널에서 확인 할 수 있다.

$ csrutil status

Recovery 파티션으로 부팅해서 Rootless를 해제하고자 한다면 disable, 다시 설정하고자 한다면 enable, 초기 상태(enabled)로 reset하고자 할 때는 clean 옵션을 아래의 예와 같이 주면 된다.

$ csrutil disable

이렇게 Rootless 설정을 바꾸면 재부팅해야 효력이 발생한다고 경고 메시지가 뜬다.

위의 예와 같이 Rootless를 해제하고 OS X로 부팅해서 상태를 확인하면 아래와 같이 뜬다.

$ csrutil status

System Integrity Protection status: disabled.

Configuration:
  Apple Internal: disabled
  Kext Signing: disabled
  Filesystem Protections: disabled
  Debugging Restrictions: disabled
  DTrace Restrictions: disabled
  NVRAM Protections: disabled

위의 각 disabled 된 놈들을 개별적으로 활성화할 수도 있는데, 잘 모르고 사용하면 위험하니까 모르는게 낫겠다 싶다.

Disk Utility의 문제 들

우선, Disk Utility UI가 완전히 바뀌었는데 뭐 Apple 입장에서는 나름 사용자가 쉽게 사용할 수 있도록 바꾸었단다. 파티션을 Pie Chart 모양으로 보여 주는데 보기는 좋으나 마우스 클릭할 공간이 줄어 들었다. GPT 파티션이 기본적으로 128개까지 파티션을 사용할 수 있는데 파티션 수를 20개 이상 사용하는 사용자가 있다면 왕짜증 곱배기가 될 것이다.

기능적으로도 아예 삭제된 기능들이 있는데, Rootless를 도입하면서 삭제된 권한 복구(permissions repair) 기능 외에도, DVD나 RAID 지원 기능이 아예 사라졌다. 사라진 기능들로 인한 불만도 가득하더라.

내가 Disk Utility를 사용하면서 왕짜증나는 문제 들은 또 다른 것들이다. 그것은 본연의 디스크 관리를 할 수 있는 방법이 없다는 것이다.


기본적으로, 전체 파티션을 볼 수 있는 방법이 없다. 물론, 내가 El Capitan에 아직 적응이 안돼서 못찾은 것일 수도 있지만 기존의 방법들이 무용지물이다. 즉, 아래의 터미널 명령으로 Disk Utiltity에서 Debug 메뉴가 생겨서 Hidden Partition까지도 볼 수 있었는데 El Capitan에서는 UI가 바뀌면서 사라진 듯 하다. 기본적으로 보이지 않는 파티션은 ESP(EFI System Partition)와 OS X Recovery Partition이다.

$ defaults write com.apple.DiskUtility DUDebugMenuEnabled 1

위의 화면에서 오른 쪽 Bar Chart를 보면 다른 OS 파티션들이 같이 포함되어 있다. 얼핏 보면 모든 파티션이 다 보이는 듯 하지만 ESP나 Recovery Partition은 아예 없다. 위 쪽의 Partition 명령을 Click하면 Pie Chart가 나타나는데 여기서도 당연히 나타나지 않는다. 참고로, 두 번째와 세 번째 untitled로 표시된 650MB 파티션 두 개는 이전 버전의 OS X Recovery Partiton인데 Mac 부팅시에 안보이도록 gdisk로 파티션 type을 임의로 설정한 것이다. El Capitan의 Recovery Partition이 Mac OS X 파티션 다음에 보여야 하는데 안보이고 맨 첫번째의 ESP 파티션도 안보인다. gdisk에서 Mac OS X 파티션 type은 Apple HFS/HFS+(AF00)이고, OS X Recovery 파티션 type은 Apple boot(AB00)이다. 실제로 3개의 복구 파티션 tyoe code를 gdisk에서 AB00으로 바꾸면 새로운 Disk Utility에서는 3개 파티션이 모두 사라진다. 대신 3개 버전의 OS X Recovery 모드로 각각 부팅할 수는 있다.

그리고, 더 큰 문제는 파티션을 삭제하려면 왼쪽의 Tree 메뉴를 사용해야 하는데 여기에는 기본 OS X 파티션과 Windows 파티션 밖에 보이지 않는다. 리눅스 파티션을 Disk Utility로 지우지 못할 이유가 무엇일까? 이것도 강화된 보안 정책의 일환인가? Windows는 만만해서 파티션을 지울 수 있는 건가? 또한, ESP와 OS X Recovery Partition은 Disk Utility에서 아예 안보이니까 당연히 삭제는 물론이고 아무 것도 할 수 없다.

또 한 가지 문제는 불필요한 Recovery Partition을 삭제하면서 알게된 문제인데 위의 Hidden Partition이 보이지 않음으로 인해 파생되는 문제이다. OS X Upgrade시에 Mac OS X 파티션을 끝에서부터 650MB 정도를 잘라서  Recovery Partition을 새로 추가한다. 나처럼 Mac OS X 파티션이 넉넉하고 3번 Upgrade했다면 3개의 Recovery Partition이 추가된다. 가장 최근에 추가된 놈이 Mac OS X 파티션 바로 옆에 위치하게 된다. 나머지 두 개는 지워도 되는 놈인데 Mac OS X 파티션과 합칠 수는 없다. 중간에 최신 Recovery 파티션이 위치하고 있기 때문이다. 방법은 모든 Recovery 파티션을 삭제하고 새로 최신 Recovery 파티션을 생성해야 하는데 El Capitan에서 가능한지는 더 조사해 보아야 한다. 아무튼, 문제점을 설명하려고 좀 장황해 졌는데, 우분투에서 gdisk를 이용해서 두 개의 Recovery 파티션을 삭제하고 다시 OS X에서 Disk Utility의 Partition 메뉴에서 [-]로 두 개의 빈 파티션을 삭제해 보았다. 중간에 최신의 Recovery 파티션이 El Capitan의 Disk Utility에서 보이지 않음으로 인해 Mac OS X 파티션에 두 개의 파티션이 제대로 합쳐진 것(merge)처럼 보인다. 실제로는 두 개의 파티션이 최신 Recovery 파티션에 합쳐져 있었다.

이 밖에도, OS X Upgrade 시에 OS X 데이터 파티션의 파일 시스템 타입이 hfs인데도 인식하지 못하고 Microsoft Basic Partition으로 바꿔 버린 것과, Rootless를 한번 해제하기 전에는 Disk Utility에서 보여주는 전체 파티션이 Recovery Mode로 부팅했을 때와 OS X로 부팅했을 때 차이가 생겼던 문제도 있었다.

맺음말

OS X El Capitan의 Disk Utility는 여러가지 기능이 삭제되어 불편할 뿐만 아니라, 본연의 디스크 관리 기능을 모두 수행할 수도 없고, 사용자가 의도한 대로 동작하지 않을 수도 있다는 점을 알아 둘 필요가 있겠다.

El Capitan에서 강화된 보안 정책인 Rootless에 대해서도, OS X 고급 사용자나  관리자 입장에서는 어차피 Recovery Mode에서는 모든 root 권한을 여전히 사용할 수 있다는 점에서, 근본적으로 필요한 것이었는지 의구심이 든다. 보안 강화라는 명목으로 3rd Party들을 Apple이 통제하려는 의도일 수도 있다는 생각이 든다.

Apple이 System Integrity에는 그렇게 신경을 쓰면서 Application Integrity에는 소홀해진 느낌~!!!

댓글 2개:

  1. 안녕하세요. 위의 게시글과는 크게 관계가 없는 이야기지만, mac 고수분인거 같아서 문의를 좀 드려볼까 합니다. 현재 2014 mid mac pro를 사용하는데, os는 yosemity로 되어 있고, ubuntu 14.04를 mac 하드웨어에 바로 설치를 해보려고 하는 중입니다. Disk util에서 파티션을 하고 LiveUSB를 몇가지의 구글링을 통해 맥 터미널에서 하였습니다. 설치는 잘 진행을 한 것 같은데, Refind도 잘 설치가 되구요. 14.04의 generic 커널 이외에 realtime 커널을 설치하였는데, 설치된 realtime 커널로 부팅이 안되는 문제가 발생을 하였습니다.
    혹시 이런 문제를 보신 적이 있으신지 여쭤보고 싶습니다. 감사합니다.

    답글삭제
  2. mac 고수도 아니구요, realtime 커널도 써본 적이 없어서 도움을 드릴 수가 없군요. 오류 부분 커널 로그를 우분투 커뮤니티나 kldp 같은데 올려 보시는게 좋겠군요.

    답글삭제