permission denied
맥북을 사용하다보면 심심치 않게 파일을 실행할 때 permission denied를 만날 수 있습니다.
이럴 때마다 chmod 755 명령어를 사용하여 파일에 대해 권한을 주어 해결하곤 하는데요.
얼마전 시험에서도 공부했던 부분이라 정리 차원에서 더 공부하여 포스팅합니다.
chmod 명령어란?
chmod 명령어는 "change mode"의 약자로, 파일이나 디렉토리의 권한을 변경하는 리눅스(유닉스) 명령어입니다.
(읽을때마다 쵸몬도로 읽게되어 썸네일에 추가해 봤습니다.)
엄밀히 말하면 유닉스 명령어이지만 리눅스도 유닉스 계열이고, 맥북의 macOS도 유닉스 계열이다보니 사용할 수 있는 것이지만 편의를 위해 리눅스 명령어라고 칭하겠습니다.
755는 뭐지?
리눅스의 파일 권한은 소유자/그룹/기타사용자로 나뉩니다.
7은 소유자 권한을 뜻하고, 5는 그룹 사용자 권한을 뜻하고, 5는 기타 사용자 권한을 뜻합니다.
그리고 각각의 숫자는 0과 1을 조합한 권한을 의미하며 3개의 비트로 구성됩니다.
3개의 비트이므로 1과 0을 사용하여 7을 만들려면 111(4+2+1) 이 될 것이고, 5는 101(4+1)이 됩니다.
비트는 순서대로 rwx이고, r은 read로 읽기 w는 write로 쓰기, x는 execute로 실행 권한을 나타냅니다.
다시 정리하면, 7은 111로 read에 대해서는 허용, write도 허용, execute도 허용하는 권한입니다.
5는 101로 read에 대해서는 허용, write는 비허용, execute도 허용합니다.
권한 확인하기
권한을 직접 확인해보려면 아래 명령어를 쳐보면 확인할 수 있습니다.
ls -l [파일명 또는 디렉토리명]
각각의 파일들의 권한이 제일 앞쪽에 표기되어 있습니다.
첫번째 파일을 보면 -rw-r--r-- 로 되어있는데, 맨 첫번째 부분은 파일 유형 표시자로 '-'은 일반파일 'd'는 디렉토리를 뜻합니다.
이제 순서대로 3개씩 끊어서 읽으면 소유자는 r,w 허용, 그룹 사용자는 r 허용, 기타 사용자는 r 허용이 됩니다.
맥과 리눅스 모두 기본 파일 권한은 일반적으로 644(-rw-r--r--)이고, 폴더는 755(-rwxr-xr-x)가 적용되어 있습니다.
읽기와 실행의 차이
맨 처음 HELP.md 파일은 읽는 걸까요? 아니면 실행하는 걸까요?
두 개의 개념이 다소 헷갈릴 수 있는데 일단 파일을 열었을 때 열리는 것을 보면 읽는 것으로 추측해 볼 수 있습니다.
간단하게 구분하는 법은 파일의 내용을 볼 수 있으면 읽기 이고, 파일이 가진 기능을 수행할 수 있으면 실행이 됩니다.
다시 말해, 기능을 수행하기 위해선 내용(코드)을 컴파일 하거나 인터프리터가 실행해야 하고 이 권한이 실행권한이 됩니다.
폴더의 경우는 조금 다릅니다.
폴더에서 읽기는 디렉토리 내용을 볼 수 있는 권한이고, 실행은 접근이 가능한 권한입니다.
읽기만 가능하다면 cd /directory가 불가능하지만 ls /directory가 가능하고, 실행만 가능하다면 그 반대입니다.
권한 적용방법
chmod 755 [filename] // 파일 하나 적용
chmod -R 755 [directory] // 폴더 전체에 적용
남에게 설명할 때 비로소 자신의 지식이 된다.
포스팅이 도움되셨다면 하트❤️ 또는 구독👍🏻 부탁드립니다!! 잘못된 정보가 있다면 댓글로 알려주세요.