AI와 개발을 쉽게 이해하는 실험실

비개발자도 따라오는 AI 도구, 자동화, 개발 실험 기록

AI & LLM/Claude & Anthropic

Claude Code Permission denied 오류 해결법 5가지 정리

루민 Lumin 2026. 7. 15. 18:24
반응형

Claude Code에서 뜨는 Permission denied 오류는 대부분 파일 접근 권한이나 설치 경로 문제입니다. 이 글은 맥·윈도우·리눅스에서 이 메시지가 떴을 때 무엇부터 확인해야 하는지, 관리자 권한(sudo)을 함부로 쓰지 않고 안전하게 해결하는 방법을 순서대로 정리합니다.

이 오류를 처음 만나면 재설치부터 반복하기 쉽습니다. 저도 그랬습니다. 그런데 막상 원인은 설정 한 줄이거나 파일 하나의 권한 값 하나인 경우가 대부분이었습니다.

특히 비개발자분들이 유튜브 튜토리얼을 따라 하다가 이 지점에서 많이 막힙니다. 용어부터 낯설기 때문입니다. 그래서 최대한 풀어서 설명해보겠습니다.

Claude Code와 Permission denied가 뭔지 먼저

Claude Code는 Anthropic이 만든 터미널 기반 AI 코딩 도구입니다. 쉽게 말해 챗봇 Claude를 웹 화면이 아니라 검은 명령창(터미널)에서 직접 부르는 방식입니다.

터미널은 컴퓨터에게 문장이 아니라 짧은 명령어로 말을 거는 창구라고 생각하시면 됩니다. 예를 들어 "이 폴더 안 파일 목록 보여줘"를 ls라는 짧은 단어로 시킵니다.

Permission denied는 우리말로 "권한이 거부됐다"는 뜻입니다. 컴퓨터가 "너는 지금 이 파일을 만지거나 실행할 자격이 없어"라며 문을 닫아버린 상황입니다.

주로 세 가지 상황에서 뜹니다.

상황 뜨는 이유
claude 명령 실행 시 실행 파일에 실행 권한이 없음
npm 설치 도중 시스템 폴더에 쓰기 권한이 없음
프로젝트 파일 수정 시 해당 파일 소유자가 내가 아님

이 셋 중 어느 상황인지 먼저 구분하면 해결이 훨씬 빨라집니다.

해결법 1. npm 설치 중이라면 sudo부터 빼기

가장 흔한 실패 패턴은 이겁니다.

npm install -g @anthropic-ai/claude-code

이 명령을 쳤더니 EACCES: permission denied 같은 메시지가 주르륵 뜹니다. 여기서 많은 분들이 sudo(관리자 권한으로 강제 실행)를 앞에 붙여 해결하려고 합니다.

되도록 피하시는 게 좋습니다. sudo로 설치한 파일은 소유자가 관리자로 잡히기 때문에 나중에 업데이트할 때 또 sudo가 필요해지고, 권한이 꼬이면서 오류가 더 자주 납니다. 저도 처음에 sudo로 밀어붙였다가 3주 뒤 업데이트에서 같은 오류를 다시 만났습니다.

권장 방법은 npm 전역 폴더를 내 홈 폴더로 옮기는 것입니다. 홈 폴더는 내가 100% 주인인 공간이라 권한 문제가 안 생깁니다.

맥·리눅스 기준으로 터미널에 이렇게 입력합니다.

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc
source ~/.zshrc

각 줄의 의미는 이렇습니다.

  • 1행: 홈 폴더에 .npm-global이라는 새 폴더를 만듭니다
  • 2행: npm에게 "앞으로 여기다 설치해"라고 알려줍니다
  • 3행: 터미널이 그 폴더를 찾을 수 있게 경로를 추가합니다
  • 4행: 방금 바꾼 설정을 즉시 적용합니다

그다음 npm install -g @anthropic-ai/claude-code를 다시 치면 sudo 없이도 설치가 됩니다.

💡 ~/.zshrc는 맥 기본 터미널(zsh) 설정 파일입니다. bash를 쓰신다면 .bashrc, .bash_profile로 바꿔 넣으세요.

해결법 2. 실행 권한 자체가 없는 경우

설치는 됐는데 claude를 실행하니 Permission denied가 뜬다면, 실행 파일에 실행 권한이 없는 상태입니다.

리눅스와 맥은 파일마다 "읽기·쓰기·실행" 세 가지 권한을 따로 관리합니다. 워드 문서 아이콘을 더블클릭했는데 "이건 열 수 없는 파일이야"라고 하는 상황과 비슷합니다.

먼저 파일 위치를 확인합니다.

which claude

이 명령은 "claude라는 실행 파일이 컴퓨터 어디에 있는지" 알려줍니다. 예를 들어 /Users/내이름/.npm-global/bin/claude 같은 경로가 나옵니다.

그다음 실행 권한을 부여합니다.

chmod +x /Users/내이름/.npm-global/bin/claude

chmod +x는 "이 파일에 실행 권한을 붙여라"는 뜻입니다. 이 한 줄로 대부분 해결됩니다.

저는 처음 이 문제를 만났을 때 파일이 분명히 있는데 왜 실행이 안 되는지 몰라서 30분 넘게 헤맸습니다. chmod +x 한 줄이면 될 일이었습니다.

해결법 3. 프로젝트 폴더 파일 소유자 확인

Claude Code로 코드를 수정하려는데 특정 파일에서만 Permission denied가 뜬다면, 그 파일의 소유자가 내가 아닐 가능성이 높습니다.

특히 앞서 sudo로 뭔가를 설치했거나, 도커나 다른 사용자 계정으로 파일을 만든 적이 있다면 소유권이 꼬여있을 수 있습니다.

파일 소유자를 확인해봅니다.

ls -la

이러면 폴더 안 모든 파일의 소유자와 권한이 목록으로 뜹니다. 예시는 다음과 같습니다.

-rw-r--r--  1 root  staff   1024  12 5 10:20  config.json
-rw-r--r--  1 nara  staff    512  12 5 10:21  main.py

위 예에서 config.json은 소유자가 root(관리자)입니다. 내 계정이 nara라면 이 파일은 내가 못 만집니다.

소유자를 나로 바꿉니다.

sudo chown -R $(whoami) ./

이 명령은 "현재 폴더와 하위 모든 파일의 소유자를 지금 로그인한 나로 바꿔라"는 뜻입니다. chown은 change owner의 약자입니다.

⚠️ 이 명령은 현재 폴더 안에서만 실행하세요. 실수로 시스템 폴더(/, /usr 등)에서 돌리면 OS가 망가질 수 있습니다.

해결법 4. 윈도우 사용자라면 WSL 확인

윈도우에서 Claude Code를 쓰신다면 대부분 WSL이라는 환경 위에서 돌립니다. WSL은 윈도우 안에 리눅스 컴퓨터를 하나 심어놓은 개념입니다.

이때 자주 생기는 문제 두 가지입니다.

첫째, 윈도우 폴더(/mnt/c/...)에서 작업할 때 권한 오류가 자주 납니다. WSL이 윈도우 파일시스템을 다룰 때 권한 표시가 실제와 다르게 잡히기 때문입니다.

해결법은 프로젝트를 WSL 홈 폴더 안(~/projects 같은 곳)으로 옮기는 것입니다. 저도 처음엔 바탕화면에서 작업하다가 계속 오류가 나서, 홈 폴더로 옮긴 뒤로는 깔끔해졌습니다.

둘째, npm을 윈도우 쪽과 WSL 쪽에 이중 설치한 경우입니다. which nodewhich npm을 쳐서 경로가 /mnt/c/...로 나오면 윈도우 쪽 걸 참조하고 있는 겁니다.

이 경우 WSL 안에 리눅스용 Node.js를 새로 깔아야 합니다. WSL 터미널에서 아래를 실행합니다.

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install 20

nvm은 Node.js 버전 관리자입니다. Claude Code는 공식 문서 기준 Node.js 18 이상을 요구하므로 20 정도를 깔면 안전합니다.

해결법 5. API 키 파일 권한 문제

가끔은 오류 메시지에 ~/.claude 또는 ~/.config 같은 경로가 함께 뜹니다. Claude Code가 API 키(일종의 출입증)나 설정 파일을 저장한 폴더인데, 여기 접근이 막힌 상황입니다.

API 키는 여러분 계정으로 Claude에게 말을 걸 자격증이라고 보시면 됩니다. 이 자격증을 저장한 파일이 손상되거나 소유자가 바뀌면 로그인 자체가 안 됩니다.

이렇게 처리합니다.

sudo chown -R $(whoami) ~/.claude
chmod 700 ~/.claude

chmod 700은 "나만 이 폴더를 읽고 쓰고 열 수 있게" 만든다는 뜻입니다. API 키가 든 폴더는 이렇게 나만 접근 가능하게 두는 게 보안상 안전합니다.

그래도 안 된다면 폴더를 통째로 지우고 로그인을 다시 하는 방법도 있습니다.

rm -rf ~/.claude
claude login

이러면 처음 설치했을 때처럼 로그인 절차부터 다시 시작합니다. 저장된 대화 기록이 있다면 백업 후 진행하세요.

그래도 안 될 때 확인할 것

위 다섯 가지를 다 해봤는데도 오류가 계속된다면, 다음 체크리스트를 하나씩 눌러봅니다.

  • [ ] Node.js 버전이 18 이상인가 (node -v로 확인)
  • [ ] npm 전역 경로가 홈 폴더 안에 있는가 (npm config get prefix)
  • [ ] claude 파일에 실행 권한 x가 붙어 있는가 (ls -la $(which claude))
  • [ ] 작업 중인 프로젝트 폴더 소유자가 나인가
  • [ ] 안티바이러스나 회사 보안 정책이 실행을 막고 있진 않은가

마지막 항목은 의외로 자주 걸립니다. 사내 노트북이라면 IT 부서 정책이 특정 위치 실행을 차단하고 있는 경우가 있습니다. 이땐 개인 폴더(~/) 아래로 프로젝트를 옮기고 다시 시도해보세요.

솔직히 말씀드리면 권한 오류는 원인이 워낙 다양해서 한 번에 딱 맞는 답을 찾기 어렵습니다. 저도 매번 다른 이유로 만납니다. 다만 위 다섯 가지 순서로 훑으면 90% 이상은 잡힙니다.

마무리

Permission denied는 무섭게 생겼지만 결국 "이 파일에 접근할 자격을 확인해줘"라는 컴퓨터의 요청입니다. sudo로 힘으로 밀어붙이지 말고, npm 설치 위치를 홈 폴더로 옮긴 뒤 실행 권한과 소유자를 점검하는 순서가 가장 안전합니다.

지금 오류 화면이 열려 있다면, 메시지에 나온 파일 경로를 그대로 복사해서 ls -la 경로로 소유자와 권한부터 확인해보세요. 대개 거기서 답이 보입니다.

Claude Code는 잘 세팅해두면 정말 편한 도구입니다. 초반 권한 세팅에서 한 번만 넘어가시면 그 뒤부터는 훨씬 즐거워집니다.

함께 보면 좋은 글

반응형