Mac Zsh 권한 거부 오류란?
macOS에서 파일을 여는 것은 매우 간단합니다. 파일을 더블클릭하기만 하면 되니까요. Mac에서 파일을 여는 데는 오랜 시간이 걸리지 않습니다.
또 다른 방법은 터미널(Terminal)을 사용하는 것입니다. 명령어를 실행하고 파일이 저장된 디렉터리를 지정하면 별다른 어려움 없이 파일을 열 수 있습니다.
하지만 항상 그렇게 순조롭게 진행되지는 않습니다. 간단한 명령어 하나를 실행했는데 터미널에서 "권한 거부(permission denied)" 오류가 발생하는 경우가 있습니다. 이는 파일 자체에 문제가 있거나 macOS 시스템에 무언가 잘못되었다는 신호입니다.
권한 거부 오류 메시지 예시
Windows의 권한 관련 오류와 마찬가지로, Mac의 권한 거부 오류도 다양한 형태의 오류 메시지로 나타날 수 있습니다. 대표적인 예시는 다음과 같습니다.
- zsh: permission denied: ./foo.rb
- Bash: bash: ./foo.rb: /usr/local/bin: bad interpreter: Permission denied
- aftheers-MacBook-Air:scripts root# ./ArduinoWifiShield_upgrade.sh
- -sh: ./ArduinoWifiShield_upgrade.sh: Permission denied
권한 거부 오류는 Mac 사용자들을 오랫동안 괴롭혀 온 흔한 문제입니다. 특별히 새로운 현상은 아니지만, Catalina나 Big Sur로 업그레이드한 후 이 오류를 겪는 사용자들의 보고가 최근 들어 많아졌습니다.
터미널에서 명령어를 실행할 때는 여러 가지 문제가 발생할 수 있으므로 이 오류를 만나는 것이 놀라운 일은 아닙니다. 하지만 파일을 열 수 있는 다른 방법이 없다면 상당히 답답한 상황일 수밖에 없죠.
예를 들어, 연결된 프로그램이 없거나 클릭에 반응하지 않는 파일을 열고 싶은 경우를 생각해 볼 수 있습니다.
Mac의 명령줄에서 발생하는 Zsh 권한 거부 오류에 대해 자세히 알아보기 전에, 먼저 기본 용어부터 정리해 보겠습니다.
macOS 터미널이란?
Mac의 터미널 앱을 활용하면 다양한 작업을 수행할 수 있습니다. 하지만 가장 널리 쓰이는 용도는 명령어를 통해 기기를 제어하는 것입니다.
터미널은 Mac의 명령줄 인터페이스(CLI)입니다. 처음 접하는 사람에게는 어렵게 느껴질 수 있지만, 익숙해지면 작업 처리가 한결 수월해집니다. 기본 기능과 명령어만 알면 명령줄에 입력해서 바로 사용할 수 있습니다.
기본 명령어를 마스터했다면, 더 고급 명령어를 학습하여 복잡한 작업도 처리할 수 있습니다.
Mac에서 터미널 앱 실행하기
Mac에서 터미널 앱을 실행하는 방법은 두 가지가 있습니다.
응용 프로그램 폴더를 통한 실행
터미널 앱은 응용 프로그램 폴더 아래의 유틸리티 폴더에 위치합니다. 응용 프로그램 폴더를 연 뒤 유틸리티를 선택하고, 터미널 앱을 더블클릭하면 됩니다.
스포트라이트를 통한 실행
또는 Command 키와 Space 키를 동시에 눌러 Spotlight를 실행한 후, terminal이라고 입력하고 검색 결과를 더블클릭하면 됩니다.
터미널 앱 커스터마이징하기
터미널을 열면 흰 배경의 작은 창이 나타납니다. 제목 표시줄에는 사용자 이름이 보이며, "bash"라는 단어와 활성 창의 픽셀 크기도 함께 표시됩니다.
창 크기를 키우고 싶다면 창의 오른쪽 하단 모서리를 클릭한 상태로 바깥쪽으로 드래그하면 됩니다.
배경색과 글꼴 색상을 변경하려면 Shell 메뉴를 열고 New Window를 선택한 후, 목록에서 원하는 옵션을 골라 적용하면 됩니다.
반드시 알아야 할 기본 Mac 명령어
터미널에 익숙해지는 가장 빠른 방법은 직접 사용해 보는 것입니다. 그 전에 먼저 명령어 입력 방법을 알아야 하는데, 생각보다 간단합니다. 명령줄에 명령어를 입력하고 Return 키를 눌러 실행하기만 하면 됩니다.
모든 명령어는 세 가지 요소로 구성됩니다. 첫째는 실행할 명령어, 둘째는 해당 명령어가 어떤 리소스에 적용될지 지정하는 인자(argument), 셋째는 출력 결과를 조정할 수 있는 옵션입니다.
예를 들어 시스템 파일을 한 폴더에서 다른 폴더로 이동하려면 이동 명령어인 "mv"를 사용하고, 파일을 옮길 위치를 함께 입력하면 됩니다.
터미널에서 활용할 수 있는 고급 명령어 예시
실무에 유용하게 쓸 수 있는 고급 터미널 명령어 몇 가지를 소개합니다.
폴더 간 파일 복사하기
한 디렉터리에서 다른 디렉터리로 파일을 복사하려면 다음 단계를 따르세요.
- 명령줄에 ditto [folder1] [folder2] 명령어를 입력합니다. folder1에는 원본 파일이 있는 폴더를, folder2에는 파일을 옮길 대상 폴더를 지정합니다.
- 복사되는 파일을 확인하고 싶다면 명령어 뒤에 -v 옵션을 추가하세요.
웹에서 파일 다운로드하기
터미널을 사용해 웹에서 파일을 내려받으려면 다음과 같이 하세요.
- 터미널 앱을 열고 cd ~/Downloads/ 명령어를 입력합니다.
- 이어서 curl -O [파일 URL] 명령어를 입력합니다.
스크린샷 저장 위치 변경하기
스크린샷의 기본 저장 위치를 바꾸려면 다음 단계를 따르세요.
- 명령줄에 defaults write com.apple.screencapture location [스크린샷을 저장할 폴더 경로]를 입력합니다.
- Return 키를 누릅니다.
- 다음으로 killall SystemUIServer 명령어를 입력합니다.
- Return 키를 다시 한번 누르면 완료됩니다.
스크린샷 기본 파일 형식 변경하기
스크린샷을 .jpg 형식으로 저장하고 싶다면 다음과 같이 하세요.
- 기본적으로 Mac 스크린샷은 .png 확장자로 저장됩니다. 이를 .jpg로 바꾸려면 defaults write com.apple.screencapture type JPG 명령어를 입력합니다.
- Return 키를 누릅니다.
- 그다음 killall SystemUIServer 명령어를 입력합니다.
- Return 키를 다시 누르면 설정이 완료됩니다.
디렉터리 내 모든 파일 삭제하기
디렉터리 안의 폴더와 하위 폴더까지 모두 삭제하려면 다음을 따르세요.
- 디렉터리의 모든 파일을 삭제하려면 rm -R directoryname 명령어를 입력합니다.
- 삭제 전 확인 절차를 거치려면 rm -iR directoryname 명령어를 사용하세요.
Zsh란 무엇인가?
Z 셸(Zsh)은 macOS의 기본 셸인 bash를 기반으로 설계·구축된 Unix 셸입니다. 전문가들은 bash보다 zsh 사용을 권장하는데, 플러그인과 테마 설정이 훨씬 쉽고 테마도 더 깔끔하고 아름답게 표현되기 때문입니다. 무엇보다 엄격한 사용자 권한을 요구하지 않는다는 장점도 있습니다.
터미널에서 파일을 열 때 발생하는 권한 거부 오류란?
이름 그대로, 이 오류는 명령어를 사용해 파일을 열려고 할 때 Mac 사용자의 접근을 막는 권한 오류입니다. sudo 명령어에서도, bash 명령어에서도 발생할 수 있습니다. 여러 보고에 따르면 root 권한으로 파일을 열 때도 이 오류가 나타난다고 합니다.
대부분의 사례에서 이 오류는 터미널을 통해 설치 프로그램 파일을 열려고 할 때 발생합니다. 파일을 터미널 창으로 드래그하면 "Permission Denied" 오류가 팝업으로 뜨는 식이죠. 물론 다른 종류의 파일에서도 동일한 문제가 생길 수 있습니다.
Mac에서 '권한 거부' 오류가 발생하는 이유
기기에서 Zsh 권한 거부 오류가 발생하는 원인은 다양합니다. 가장 흔한 원인들은 다음과 같습니다.
파일이 잠겨 있는 경우
잠긴 프로그램을 설치하거나 잠긴 파일을 수정하려고 하면 "권한 거부" 오류가 발생할 가능성이 높습니다. 관리자 권한이 없거나, 파일 생성자가 chmod로 파일을 잠가놓았을 수 있습니다.
이 오류는 현재 사용자 계정이 소유하지 않은 디렉터리에 쓰기를 시도하고 있다는 의미이기도 합니다.
파일 권한 부족
대상 파일의 권한은 터미널에 ls -l file.ext를 입력해 확인할 수 있습니다. "file.ext"에는 열거나 수정하려는 파일명과 확장자를 넣으면 됩니다. 또는 관리자 권한이 필요한 명령어를 "sudo"로 강제 실행해 볼 수도 있습니다.
잘못된 Chmod X 또는 시스템 명령어
입력한 chmod x나 다른 시스템 명령어가 올바르지 않아서 오류가 날 수도 있습니다.
구문 오류가 없는지 확인하고 올바른 명령어를 사용하고 있는지 점검하세요. 애플리케이션을 실행하려는 경우라면 해당 프로그램의 명령어가 유효하고 컴퓨터에 설치되어 있는지도 확인해야 합니다.
Mac에서 권한 거부 오류 해결하는 방법
이 오류가 발생하면 우선 평소처럼 파일을 더블클릭해서 열 수 있는지 확인해 보세요. 실패했다면 아래의 해결 방법들을 차례로 시도해 볼 수 있습니다.
그전에 중요한 파일은 반드시 백업해 두세요. 강제로 명령어를 실행하다 보면 시스템에 문제가 생기고 더 큰 오류로 이어질 가능성이 있기 때문입니다. 미리 대비하는 것이 안전합니다.
또한 Mac 최적화 도구를 사용해 시스템을 정리하면 다른 문제가 발생하는 것을 예방할 수 있고 프로세스도 원활하게 돌아갑니다. 정리가 끝나면 Mac을 재시동하고 아래의 문제 해결 가이드를 따라 해보세요.
1단계: 권한 상태 확인하기
앞서 언급했듯이 이 오류는 대개 파일에 접근할 충분한 권한이 없을 때 발생합니다. 해당 여부를 확인하려면:
- 유틸리티에서 터미널을 실행합니다.
- 다음 명령어를 입력하고 마지막 문자 뒤에 공백 하나를 추가합니다. Enter는 누르지 마세요: ls -l
- 열고 싶은 파일을 드래그해서 터미널 창 위에 놓습니다. 그러면 파일 경로가 기존 명령어 뒤에 자동으로 붙습니다. 실제로 파일이 이동되는 것은 아닙니다.
- 터미널 창을 클릭한 후 Enter 키를 누릅니다.
이 결과를 통해 파일에 대한 쓰기 및 수정 권한이 있는지 확인할 수 있습니다.
2단계: 디렉터리 소유권 변경하기
디렉터리에 쓰기를 시도하기 전에 chown 명령어로 해당 디렉터리의 소유권을 가져오세요.
터미널에 다음 명령어를 입력하고 Enter를 누릅니다: chown -R $USER:$USER /path/to/directory
$USER는 현재 로그인한 사용자 계정으로, /path/to/directory는 쓰기를 원하는 디렉터리 경로로 바꿔 입력하면 됩니다.
3단계: 터미널에 전체 디스크 접근 권한 부여하기
터미널이 디스크에 대한 완전한 접근 권한을 갖고 있지 않아 명령어로 파일을 열지 못하는 경우도 있습니다. 이 경우 시스템 환경설정 > 보안 및 개인 정보 보호 > 개인 정보 보호 패널로 이동한 뒤, 컴퓨터를 제어할 수 있는 앱 목록에 터미널을 추가하세요.
4단계: SUDO 명령어 활용하기
Sudo는 간단하지만 강력한 명령어로, 관리자 권한으로 명령을 실행할 수 있게 해 줍니다. 권한 문제로 명령이 거부되었다면 sudo를 활용해 보세요.
sudo 명령어는 이후에 오는 명령들을 슈퍼유저(superuser) 또는 root 권한으로 실행합니다. 이를 통해 터미널에서 거의 모든 명령어를 실행할 수 있습니다. 원래 명령어 앞에 sudo만 붙이면 됩니다. 예시는 다음과 같습니다.
- sudo chmod 755 /dvtcolorconvert.rb
- sudo chmod 755 ~/Themes/ObsidianCode.xccolortheme
sudo 명령어를 처음 사용하면 비밀번호 입력을 요구받습니다. 한 번 입력한 후에는 매번 sudo 명령어를 쓸 때마다 비밀번호를 다시 묻지 않습니다.
Zsh 권한 거부 오류를 해결하는 다른 방법들
macOS Catalina 등에서 파일을 열려고 할 때 계속 Zsh 권한 거부 오류가 나타난다면, 아래의 해결책들도 시도해 보세요.
방법 #1: Oh My Zsh 다운로드하기
기존 터미널 앱을 개선함으로써 Zsh 권한 거부 오류를 해결할 수 있는 경우도 있습니다. 그 대표적인 방법이 Oh My Zsh를 활용하는 것입니다.
Oh My Zsh는 macOS Catalina 등 다양한 macOS 버전에서 Zsh 구성을 관리할 수 있는 오픈소스, 사용자 친화적, 커뮤니티 기반 프레임워크입니다. 다양한 기능, 플러그인, 테마 등 유용한 요소들이 번들로 포함되어 있습니다.
이 프레임워크를 설치하면 수백 가지 강력한 플러그인과 깔끔한 테마를 사용할 수 있으며, 터미널을 자신의 취향대로 꾸밀 수 있습니다.
다운로드하려면 ohmyz.sh 웹사이트에 접속하세요. 실행 파일을 내려받은 후 터미널에서 다음 명령어를 실행해 설치합니다: $ sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)".
방법 #2: .zshrc 파일 구성하기
여전히 Zsh 권한 거부 오류가 나타난다면 .zshrc 파일을 구성해 보세요. 이 파일에는 새 zsh 셸을 실행하는 데 필요한 스크립트가 담겨 있습니다. 따라서 이 파일을 수정했다면 변경 사항을 적용하려면 새 셸을 시작해야 합니다.
open ~/.zshrc 명령어를 실행하면 시스템 루트 폴더에 있는 .zshrc 파일이 열리고, 여기서 터미널을 커스터마이징할 수 있습니다.
참고로 macOS Catalina 이상 버전에서는 동일한 Zsh 권한 거부 오류가 계속 나타날 수 있습니다. 이때는 chmod +x ~/.zshrc 명령어로 파일을 열어 권한을 구성해 주세요.
방법 #3: 터미널 앱의 테마 변경하기
Oh My Zsh 프레임워크를 설치했다면 이 방법을 진행할 수 있습니다. ZSH_THEME="theme_name" 명령어를 사용해 현재 터미널 앱의 테마를 변경해 보세요.
방법 #4: 시스템의 기본 셸 변경하기
Zsh 권한 거부 오류를 없애는 또 다른 방법은 시스템의 기본 셸을 바꾸는 것입니다. 다음 단계를 따르세요.
- Apple 메뉴로 가서 환경설정을 선택합니다.
- 사용자 및 그룹으로 이동합니다.
- 자물쇠 아이콘을 클릭하고 사용자 계정 이름과 비밀번호를 입력합니다.
- 사용자 목록에서 자신의 계정 이름을 Control+클릭합니다.
- 고급 옵션을 선택합니다.
- 로그인 셸 메뉴에서 셸을 선택합니다.
- 확인을 눌러 변경 사항을 적용합니다.
Mac에서 권한 문제를 예방하는 방법
앞으로 권한 문제를 피하려면 누가 기기의 파일을 보고 수정할 수 있는지 정의하는 권한 설정을 미리 변경해 두는 것이 좋습니다. 몇 가지 방법을 소개합니다.
방법 #1: 사용자 및 그룹에 권한 할당하기
다양한 사용자와 그룹에 권한을 할당하면 macOS 기기의 권한 문제를 예방할 수 있습니다. 방법은 다음과 같습니다.
- Mac에서 폴더나 디렉터리를 선택합니다.
- 파일 메뉴에서 정보 가져오기를 선택합니다.
- 정보가 표시되지 않으면 화살표를 클릭합니다.
- 사용자 또는 그룹을 선택하고 팝업 메뉴에서 권한을 지정합니다.
- 확인을 눌러 변경 사항을 저장합니다.
방법 #2: 모든 항목에 권한 적용하기
모든 항목에 권한을 적용하면 허가된 사람만 접근할 수 있습니다. 다음 단계를 따르세요.
- 디렉터리를 선택하고 파일 메뉴로 갑니다.
- 정보 가져오기를 클릭합니다.
- 동작 팝업 메뉴를 확인하고 내부 항목에 적용을 선택합니다.
- 확인을 눌러 변경 사항을 저장합니다.
방법 #3: 항목의 소유자 변경하기
항목이 다른 사용자에게 소유되어 있다면 권한 문제가 생길 수 있습니다. 다음과 같이 해결하세요.
- 항목을 선택하고 파일 > 정보 가져오기로 이동합니다.
- 새 소유자의 이름이 목록에 없다면 추가 버튼을 클릭해 새 소유자를 추가합니다.
- 새 소유자를 선택한 뒤 동작 팝업 메뉴를 클릭합니다.
- <새 소유자>를 소유자로 만들기를 클릭합니다.
- 변경 사항을 적용하고 저장합니다.
방법 #4: 사용자 또는 그룹 추가/제거하기
사용자나 그룹을 추가하거나 제거하는 것만으로도 권한 문제가 해결될 수 있습니다. 방법은 다음과 같습니다.
- 항목을 선택합니다.
- 파일 메뉴에서 정보 가져오기를 클릭합니다.
- 공유 및 권한 섹션으로 이동합니다.
- 사용자나 그룹을 추가하려면 사용자 또는 그룹 추가를, 제거하려면 사용자 또는 그룹 제거를 선택합니다.
- 변경 사항을 저장합니다.
마무리 정리
파일에 접근하려고 할 때 Mac에서 "권한 거부" 오류가 발생하더라도, 더블클릭으로 해당 파일을 열 수 있다면 큰 문제가 아닙니다. 하지만 대부분의 경우 이 오류를 겪는 사용자는 일반적인 방법으로도 파일을 열지 못합니다.
이것은 권한 오류이므로 파일에 접근할 충분한 권한이 있는지 먼저 확인해야 합니다. 위에서 안내한 단계들이 어떻게 해야 할지 방향을 잡아 줄 것입니다. 명령어나 터미널 사용이 익숙하지 않은 Mac 사용자에게도 큰 도움이 될 것입니다.
Mac에서 Zsh 권한 거부 오류를 해결하려면 먼저 파일의 권한을 확인하세요. 현재 사용자 계정에 파일 접근 권한이 부족할 가능성이 높습니다.
그래도 해결되지 않으면 chown 명령어로 디렉터리의 소유권을 변경해 보세요.
또한 터미널 앱에 디스크 전체 접근 권한을 부여하거나, SUDO 명령어로 슈퍼유저/root 권한을 얻는 방법도 있습니다.
기본적인 문제 해결 방법이 모두 실패한다면 다른 해결책으로 넘어가세요. 먼저 Oh My Zsh 프레임워크를 다운로드해 보세요. 이 방법으로 문제를 해결한 사용자가 많으며, 이 프레임워크를 통해 터미널 앱을 자유롭게 커스터마이징할 수 있습니다.
그다음으로 .zshrc 파일 자체를 구성하거나 터미널 앱의 테마를 변경하는 방법도 시도해 볼 수 있습니다. 오류가 계속된다면 시스템의 기본 셸을 바꿔 보세요.
모든 방법을 시도했는데도 해결되지 않는다면 Mac 전문가의 도움을 받는 것이 좋습니다. 전문가가 대신 문제를 진단해 줄 것입니다.
그 외에 겪었던 Mac 관련 오류가 있다면 댓글로 알려주세요.