Zsh permission denied(권한 거부) 오류는 Linux나 macOS에서 실행 권한이 없는 명령어를 실행하려고 할 때 발생합니다. 예를 들어 쓰기 권한이 없는 디렉터리에 대해 'ls'를 실행하거나, 현재 사용자에게 허용되지 않은 작업을 수행하는 스크립트를 실행할 때 나타날 수 있습니다. 여기서 말하는 권한은 읽기(read) 또는 쓰기(write) 권한을 의미합니다.
이 글에서는 이 오류의 주요 원인을 살펴본 뒤, 각 해결 방법을 하나씩 시도해 보며 어떤 방법이 가장 적합한지 확인해 보겠습니다.
이 오류는 대체로 파일에 대한 실행(execution), 읽기(read), 쓰기(write) 권한이 없을 때 발생합니다.
예를 들어 Linux 운영체제의 Zsh 셸 안에서 'cat' 명령으로 파일 내용을 확인하려는데 'permission denied' 오류가 발생했다고 가정해 봅시다.
오류 원인 확인하기
오류를 수정하려면 먼저 파일의 권한 정보를 확인해야 합니다. 다음 명령어를 실행해 권한을 확인합니다.
ls -l
출력 결과를 보면 해당 파일은 root 사용자와 root 그룹만 읽을 수 있고, 쓰기는 root 사용자만 가능하도록 설정되어 있습니다.
1. sudo 명령어 사용하기
가장 간단한 해결책은 실행하려는 명령어 앞에 'sudo'를 붙여 root 권한으로 실행하는 것입니다.
sudo cat file
실행하려는 명령어나 작업이 시스템에 악영향을 주지 않는다고 확신할 수 있는 경우에만 sudo를 사용하는 것이 안전합니다.
2. 파일 권한 또는 소유자 변경하기
권한 거부 오류는 보통 읽기 또는 쓰기 권한 부족으로 인해 발생하므로, 해당 파일의 권한 자체를 변경하는 방법도 있습니다.
파일이 위치한 디렉터리에서 'ls -l'을 실행하면 파일의 소유자(owner)와 그룹(group)이 root로 되어 있는 것을 확인할 수 있습니다. 소유자를 현재 사용자로 변경한 후 원하는 작업을 진행하면 됩니다.
sudo chown [사용자명] [파일명]
예를 들어 로그인한 사용자가 v3n0m이라면 다음과 같이 입력합니다.
sudo chown v3n0m file
여기서 v3n0m은 현재 사용자 이름이며, 실제 환경에서는 본인의 사용자명을 입력하면 됩니다.
소유자를 변경한 후에는 더 이상 permission denied 오류 없이 cat 명령을 정상적으로 실행할 수 있습니다.
3. 실행(Execute) 권한 부여하기
Zsh를 포함한 대부분의 셸에서는 파일명 앞에 './'를 붙여 프로그램처럼 실행할 수 있습니다. 하지만 파일에 실행 권한이 설정되어 있지 않으면 zsh : permission denied 오류가 발생합니다.
예를 들어 script1이라는 스크립트를 실행하기 위해 터미널에 ./script1을 입력했더니 오류가 발생했다고 가정해 봅시다. 먼저 ls -la 명령으로 파일 권한을 확인하면 실행(execute) 권한이 설정되어 있지 않음을 알 수 있습니다.
해결 방법은 간단합니다. 파일에 실행 권한을 추가하면 됩니다.
chmod +x script1
chmod +x는 파일 소유자(owner), 그룹(group), 기타 사용자(others) 모두에게 실행 비트(execute bit)를 추가합니다.
이후 ./script1을 입력하면 오류 없이 프로그램을 실행할 수 있습니다. 이 방법은 Linux에서 발생하는 오류를 해결해 주지만, macOS나 Gradle 환경에서 오류가 발생한다면 아래 내용을 계속 확인해 보세요.
.zshrc 파일 편집하기 (macOS)
일부 macOS 사용자들은 명령어를 실행하려는 디렉터리에 있지 않을 때 이 오류가 발생한다고 보고했습니다.
비슷한 문제를 겪고 있다면 해결 방법은 매우 간단합니다. 홈 디렉터리(home/username)에 있는 .zshrc 파일을 열어 파일 맨 끝에 다음 줄을 추가하세요.
setopt auto_cd
이렇게 하면 zsh의 auto_cd 옵션이 활성화됩니다. .zshrc 파일을 편집할 때는 GUI 텍스트 에디터를 사용해도 되고, vim이나 vi 같은 커맨드라인 텍스트 에디터를 사용해도 됩니다.
CHMOD 명령으로 권한 설정하기 (Gradle)
Gradle 프로젝트 작업 중 gradlew 파일에 올바른 실행 권한이 없으면 Zsh 권한 거부 오류가 발생할 수 있습니다.
이 경우 gradlew 파일에 올바른 권한을 설정해야 합니다. 터미널에 다음 명령어를 입력하세요.
chmod 755 gradlew
이 명령은 gradlew 파일을 실행 가능한 상태로 만들어 오류를 해결합니다.
또는 더 간단하게 다음 명령어를 사용해도 됩니다.
chmod +x gradlew
이 역시 gradlew 파일에 실행 권한을 부여하여 동일하게 문제를 해결할 수 있습니다.
위 방법들로도 문제가 해결되지 않았다면 댓글로 알려주세요. 기술 지원팀이 빠르게 도움을 드리겠습니다.
작성자 소개

Kevin Arrows
Kevin Arrows는 10년 이상의 업계 경험을 지닌 베테랑 기술 전문가입니다. Microsoft Certified Technology Specialist(MCTS) 자격증을 보유하고 있으며, 최신 기술 동향을 꾸준히 학습하는 것에 큰 열정을 가지고 있습니다. 소프트웨어 개발, 사이버 보안, 클라우드 컴퓨팅 등 다양한 IT 분야에 걸쳐 폭넓게 집필해 왔으며, 복잡한 기술 개념을 명확하고 간결하게 설명하는 능력으로 동료들의 인정을 받고 있습니다.