MacOS 에서 시스템 폴더에 접근하여 파일을 생성하거나 디렉토리를 만들려고 하니 "Operation not permitted" 라는 메세지가 뜨면서 실행이 안됩니다.
MacOS 에서 시스템 폴더에 접근하여 파일을 생성하거나 디렉토리를 만들려고 하면 "Operation not permitted" 라는 메세지가 뜨면서 실행이 안됩니다.
저의 경우에는 Apache 웹서버에 특정 파일을 가져다 놓을려고 했는데 위와 같은 에러가 발생하면서 생성이 되지 않았습니다.
이럴 경우에는 SIP (Security Integrity Protection)라고 하는 시스템 무결성 보호(SIP)를 꺼주어야 합니다.
시스템 무결성 보호(SIP)란 macOS 시스템 폴더 내에 시스템을 구동하는데 큰 영향을 끼치는 파일들을 보호하기 위해 존재하며, 해당 파일들은 admin 계정으로 접속을 하더라도 수정, 실행, 삭제 등의 제약을 받습니다.
즉, 시스템 파일과 폴더를 수정할 가능성을 사전에 차단해 악성 소프트웨어로부터 Mac을 보호해주는 기능입니다.
매우 효과적인 보안기능이지만 사용자가 시스템을 수정하거나 일부 소프트웨어를 사용해야 할 경우에 SIP를 해제해야 합니다.
따라서, 평소에는 SIP 기능이 활성화된 상태로 맥을 사용하며, 필요에 따라 잠깐씩 해제하는 것이 보안 관점에서 바람직합니다
SIP에 영향으로 내 마음대로 수정/삭제가 불가능한 디렉토리
/System
/sbin
/bin
/usr : /usr/local 디렉토리를 제외한 나머지 서브디렉토리
/Applications : macOS에 기본적으로 설치된 앱(캘린더, 사진, 사파리, 터미널 등
SIP기능 비활성하기
1. Mac 재부팅하여 command + R 키를 계속 눌러 Recovery Mode 로 진입합니다.
2. Recovery Mode 에서 Utilities 메뉴에서 Terminal 을 클릭합니다.
3. Terminal 화면에서 "csrutil disable"을 입력합니다.
4. "reboot"을 입력하여 재부팅합니다.
Recovery Mode (복구모드)에 들어가면 보여지는 화면입니다.
$ csrtuil disable
....
$ reboot
위와 같이 하면 재부팅되면서 SIP기능 비활성화 됩니다.
그리고 나서 /usr 나 /etc 에 cp 명령을 해보면
Read-only file system
와 같은 에러가 발생합니다.
$ sudo cp libphp5.so /usr/libexec/apache2/
Password:
cp: /usr/libexec/apache2/libphp5.so: Read-only file system
그래서 부팅이 되면 터미널에서 다음 커맨드를 입력하여 / 에 대해서도 쓰기가 가능하도록 조치해야 합니다.
$ sudo mount -uw /
이제 / 디렉토리가 쓰기가능하게 바뀌면서 파일을 만들거나 디렉토리를 만들어 줄 수 있게 됩니다.
macOS의 시스템 폴더에 대한 권한을 획득하여 작업을 하신 후에 다시 활성화하는게 좋습니다.
SIP기능 활성화하기 - macOS Sierra 10.12.2 이전 버전
1. Mac 재부팅하여 command + R 키를 계속 눌러 Recovery Mode 로 진입합니다.
2. Recovery Mode 에서 Utilities 메뉴에서 Terminal 을 클릭합니다.
3. Terminal 화면에서 "csrutil enable"을 입력합니다.
4. "reboot"을 입력하여 재부팅합니다.
$ csrutil enable
...
$ reboot
SIP기능 활성화하기 - macOS Sierra 10.12.2 이후 버전
macOS Sierra 10.12.2 이후 버전에서 복구모드로 접근할 필요 없이, 터미널에서 아래 커맨드만 치시면 됩니다.
$ sudo csrutil clear
또는
$ sudo /usr/bin/csrutil clear
< 참조URL >
Mac OS X Operation not Permitted 발생시
https://ellordnet.tistory.com/65
https://luv2irene.tistory.com/12
시스템 무결성 보호(SIP) 상태 해제 및 활성화하는 방법
https://macinjune.com/all-posts/mac/tip/%EC%8B%9C%EC%8A%A4%ED%85%9C-%EB%AC%B4%EA%B2%B0%EC%84%B1-%EB%B3%B4%ED%98%B8sip-%EC%83%81%ED%83%9C-%ED%95%B4%EC%A0%9C-%ED%99%9C%EC%84%B1%ED%99%94-%EB%B0%A9%EB%B2%95/
macOS - Catalina / (root) 에 디렉토리 만들기
https://junho85.pe.kr/1458