원도우와 다르게 맥에서는 일반 사용자 계정뿐만이 아니라 루트 계정으로도
루트 폴더에 폴더를 생성할 수 없습니다.
루트 폴더에서 폴더를 생성하려고 하면 아래와 같은 에러가 발생합니다.
> mkdir test
mkdir: test: Read-only file system
심볼릭 링크를 만들려고 해도 마찬가지입니다.
> ln -s /Users/test test
ln: test: Read-only file system
맥OS의 기본적인 시스템 무결성 보호(SIP, System Integrity Protection) 정책 때문입니다.
OS구동에 필요한 시스템 관련 파일들과 폴더를 임의로 변경할 수 없게 막아놓은 것입니다.
이 문제를 해결하기 위한 방법은 두 가지입니다.
- SIP(시스템 무결성 보호) 해제
- 심벌릭 링크 생성
시스템 무결성 보호(SIP) 해제
- 리커버리 모두 진입 - 재부팅 후
Cmd + R
버튼을 누르고 있으면 리커버리 모드로 진입합니다. - 터미널 실행 후 SIP 해제 명령 실행
> csrutil disabled
- 실행 전에 >
csrutil status
명령으로 현재 SIP상태를 확인할 수 있습니다.
- 재부팅
- 디렉토리 쓰기 설정
> sudo mount -uw /
- 이 방법은 SIP정책을 무력화하는 방법이기 때문에 보안상, 필요할 때만 사용하고 다시 원상태로 돌려놓는 게 좋습니다.
심볼릭 링크 만들기
-
/etc 폴더 밑에 synthetic.conf 파일을 생성합니다. root 계정으로 생성해야 합니다.
> sudo vi /etc/synthetic.conf
-
심볼릭 링크를 걸 폴더와 대상을 아래와 같이 작성합니다.
... ... test /Users/ykjang/test ... ...
- 재부팅 -> 추가할 때마다 재부팅을 해야 해서 매우 번거롭습니다.
- 루트 폴더를 확인해 보면 심벌릭 링크가 만들어진 걸 확인할 수 있습니다.
윈도우 OS기준의 경로 정보로 세팅되어 있는 어플리케이션들은 경로가 루트로 되어 있는 경우가 있습니다.
매우 잘못된 구조이긴 하나, 현재 운영되고 있는 서비스라면 변경하는 게 어려운 상황일 수 있습니다.
맥에서 이런 어플리케이션의 개발환경을 동일하게 구성하려면
어쩔 수 없이 루트 폴더에 필요한 폴더를 생성해야 할 필요성이 생기는데,
그럴 때 활용하면 좋을 것 같습니다.
최근댓글