IT Engineering
맥북 macOS Homebrew 권한 꼬임(Permission Denied) 문제의 구조적 원인과 해결 방안
• 김민준 · IT 시스템 엔지니어
애플 실리콘(Apple Silicon)인 M1, M2 칩셋으로 넘어오면서 맥북의 오픈소스 생태계와 개발 언어 설치 환경은 아키텍처 단에서 매우 중대한 변혁을 맞이했습니다. 이 과정에서 가장 필수적인 시스템 패키지 매니저인 `Homebrew`를 다루는 수많은 초중급 개발자들이 시도 때도 없이 마주하며 거대한 스트레스를 유발하는 에러가 바로 'Permission Denied'로 대변되는 파일 시스템 권한 꼬임 현상입니다. 멀쩡하게 잘 설치되던 파이썬이나 노드(Node.js) 패키지가 어느 날 갑자기 `brew install` 커맨드를 치는 순간 막대한 양의 빨간색 권한 오류 로그를 토해내며 설치가 중단된다면, 이는 여러분의 맥 OS 루트 폴더 오너십 체계가 무너졌음을 시사하는 강력한 경고등입니다. 저 역시 과거 아무런 경각심 없이 인터넷에 떠도는 `sudo brew install` 명령어 스크립트를 실수로 터미널에 복사해 넣고 엔터를 친 이후, 전체 시스템의 폴더 소유권이 루트(root) 계정으로 귀속되어 버리는 바람에 반나절 넘게 삽질을 했던 쓰라린 경험이 있습니다.
문제의 본질을 이해하려면 인텔 맥 기반 시절의 파편화된 유산과 새로운 애플 실리콘의 구조적 차이를 들여다보아야 합니다. 과거 수십 년간 X86 인텔 기반의 macOS 환경에서 홈브루는 기본적으로 `/usr/local/bin` 디렉토리를 코어 루트 베이스로 삼고 설치되었습니다. 하지만 ARM 아키텍처 기반의 네이티브 실리콘 맥으로 넘어오면서부터는 시스템 무결성 보호(SIP) 규칙과 퍼포먼스 향상 목적에 의해 설치 타겟 위치가 완전히 새로운 `/opt/homebrew` 경로로 분리 마이그레이션 되었습니다. 이 과도기적 상황 속에서 사용자가 깃허브에서 구형 쉘 셋업 스크립트를 무분별하게 끌어와 실행하거나, 패키지 간의 심볼릭 링크(Symlink) 맵핑 과정에 `sudo`(관리자 권한 강제 획득) 접두사를 구겨 넣는 만행을 저지르게 되면, 원래 현재 로그인 중인 Mac 사용자(`$USER`) 명의로 소유권이 할당되어야 정상인 brew 관련 디렉토리들이 죄다 강력한 `root` 소유권으로 무단 전환되어 버립니다. 결과적으로 다음번 패키지를 다운로드해 라이팅(쓰기) 작업을 진행하려 할 때 일반적인 유저 권한으로는 해당 경로에 파일 조각조차 집어넣지 못하고 Permission Denied 거부 사태에 봉착하게 되는 것입니다.
이 꼬여버린 실타래를 끊어내는 가장 근본적인 처방은, 망가진 소유권 테이블을 현재 터미널을 다루고 있는 오리지널 사용자 계정 권한으로 모조리 재귀적 반환시키는 로우 레벨(Low-level) 명령어 처리입니다. iTerm2 혹은 기본 터미널을 열고 `sudo chown -R $(whoami):admin /opt/homebrew` 명령을 정확히 타격하여 실행합니다. 이 명령어는 `/opt/homebrew` 폴더와 그 자식 개념으로 속해 있는 수만 개의 내부 패키지 캐시 폴더들 전체에 대하여 소유주를 자기 자신(`whoami`) 계정으로, 그룹 속성을 관리자(`admin`) 그룹으로 강력하게 재선언하여 덮어씌워 줍니다. 인텔 맥 사용자라면 경로만 `/usr/local/*` 로 치환하여 동일하게 응급처치할 수 있습니다.
소유권 양도 작업이 완료된 후에는 내장 홈브루 헬스체크 명령인 `brew doctor`를 실행해 보아야 합니다. 닥터 명령은 시스템 전체를 스캐닝하여 여전히 깨져 있거나 중복된 링킹 오류 상태를 면밀히 분석하고 수술을 안내해 주는 친절한 엔지니어 역할을 수행합니다. 이곳에서 뱉어내는 가이드 지시를 순차적으로 따라 치는 것만으로도 대부분의 치명적인 의존성 파일 문제를 자체 수리할 수 있습니다. 마지막으로 zsh이나 bash 프로필(profile) 내의 `PATH` 환경 변수 익스포트 코드가 `/opt/homebrew/bin`을 시스템 디폴트 바이너리 경로보다 논리적으로 훨씬 앞단에서 우선 검색하도록 우선순위 배치가 잘 렌더링되어 있는지 다시 한번 점검하는 것이 필요합니다. 운영체제의 본질은 결국 이 권한과 경로의 주도권 싸움에 불과하며, 이 기본적인 소유권 구조(Ownership Hierarchy)를 통제할 수 있는 시각을 갖춰야 비로소 개발자로서 맥북의 진정한 포텐셜을 해방시킬 수 있습니다.