
리눅스 사용자이거나 리눅스 서버를 관리하는 시스템 관리자라면 한 번쯤 "You do not have the permissions to upload file to the folder"(해당 폴더에 파일을 업로드할 권한이 없습니다)라는 오류 메시지를 마주한 적이 있을 것입니다. 검색해 보면 해결책은 의외로 간단합니다. 파일 권한을 "775" 또는 "777"로 설정하면 되는데, 기술적인 용어로 표현하면 "파일에 chmod 777을 실행하라"는 안내를 받게 됩니다. 그렇다면 "777"은 정확히 무슨 의미일까요? 그리고 왜 하필 "8"이나 "9"가 아니라 반드시 "7"일까요?
이 글에서는 파일 권한을 좀 더 깊이 이해할 수 있도록 chmod 777의 의미까지 자세히 살펴보겠습니다.
파일 권한의 기본 개념
유닉스 계열 운영체제(리눅스, macOS 포함)에는 특정 파일이나 폴더에 누가 접근할 수 있는지, 그리고 접근한 후 무엇을 할 수 있는지를 결정하는 파일 제어 메커니즘이 내장되어 있습니다.
여기서 고려해야 할 요소는 두 가지입니다.
클래스(Class). 누가 파일에 접근할 수 있는지를 결정합니다. 소유자(Owner), 그룹(Group, 동일한 권한을 공유하는 사용자 집단), 기타 사용자(Others) 세 가지로 구분됩니다.
- 소유자(Owner): 일반적으로 파일이나 폴더를 생성한 사람입니다. 리눅스에서 홈 디렉터리에 생성한 파일이나 폴더는 별도로 소유권을 변경하지 않는 한 기본적으로 자신에게 귀속됩니다.
- 그룹(Group): 동일한 권한과 사용자 권한을 공유하는 사용자들의 모임입니다.
- 기타 사용자(Others): 시스템에 접근하는 일반 대중을 의미합니다.

권한(Permission). 사용자가 파일로 무엇을 할 수 있는지를 결정합니다. 읽기(Read), 쓰기(Write), 실행(Execute) 세 가지 권한을 거의 모든 조합으로 설정할 수 있습니다.
- 읽기(Read): 파일 내용을 어떤 방식으로도 수정할 수 없습니다. 폴더에 적용되는 경우 폴더 내부의 파일을 열람만 가능하고, 삭제·수정하거나 새 파일을 추가할 수 없습니다.
- 쓰기(Write): 파일을 수정할 수 있습니다. 폴더에 대한 쓰기 권한이 있다면 해당 폴더에서 파일을 삭제하거나 추가할 수 있습니다.
- 실행(Execute): 주로 파일을 직접 실행해야 할 때 필요하며, 특히 스크립트를 구동할 때 가장 많이 사용됩니다.

클래스와 권한을 조합하면 누가 파일에 접근할 수 있고 어떤 작업을 수행할 수 있는지 정교하게 통제할 수 있습니다.
일반적으로 파일 소유자는 읽기, 쓰기, 실행 세 가지 권한을 모두 갖습니다. 서버에 파일을 업로드하지 못하는 경우 대부분은 권한 설정이 맞지 않아서입니다.
파일 권한 777의 의미
클래스와 권한의 기본 개념을 이해했다면 이제 "777", "775" 같은 숫자의 의미를 파악할 준비가 된 것입니다.
모든 파일과 폴더에는 권한을 제어하는 8비트 데이터가 담겨 있습니다. 기본 이진수 형태에서 000은 어떠한 권한도 부여되지 않았음을 뜻합니다.
"읽기" 권한을 설정하면 데이터에 4비트가 추가되어 이진수로 "100", 십진수로 "4"가 됩니다. "쓰기" 권한은 2비트를 더해 이진수 "010", 십진수 "2"가 되고, 마지막으로 "실행" 권한은 1비트를 추가해 이진수 "001", 십진수 "1"이 됩니다. 정리하면 다음과 같습니다.
- 읽기 = 4
- 쓰기 = 2
- 실행 = 1
결국 권한 설정은 단순한 산술 연산입니다. 예를 들어 "읽기 + 쓰기" 권한을 부여하려면 4와 2를 합쳐 6이 됩니다. 나머지 조합도 모두 같은 방식으로 계산됩니다.
- 0: 권한 없음
- 1: 실행
- 2: 쓰기
- 3: 쓰기 + 실행
- 4: 읽기
- 5: 읽기 + 실행
- 6: 읽기 + 쓰기
- 7: 읽기 + 쓰기 + 실행
완전한 파일 권한은 첫 번째 숫자가 소유자, 두 번째 숫자가 그룹, 세 번째 숫자가 기타 사용자에게 적용됩니다. 실무에서 자주 사용되는 권한 조합은 다음과 같습니다.
- 755: 웹 서버에서 널리 사용되는 권한입니다. 소유자는 읽기, 쓰기, 실행 권한을 모두 가지며, 나머지 사용자는 읽기와 실행만 가능하고 파일을 수정할 수 없습니다.
- 644: 소유자만 읽기와 쓰기가 가능하고, 나머지 사용자는 읽기만 가능합니다. 누구도 이 파일을 실행할 수 없습니다.
- 655: 소유자는 읽기와 쓰기만 가능하고 실행할 수 없으며, 나머지 사용자는 읽기와 실행만 가능하고 수정할 수 없습니다.
그렇다면 777은 어떨까요? 777은 모든 사용자에게 읽기, 쓰기, 실행 권한을 전부 부여한다는 의미입니다. 전체 권한을 개방하는 것이므로 신중하게 사용해야 하지만, 경우에 따라서는 서버에 파일을 업로드하기 위해 먼저 777 권한을 설정해야 할 수도 있습니다.
GUI로 파일 권한 설정하기
리눅스 데스크톱 환경에서는 파일이나 폴더를 마우스 오른쪽 버튼으로 클릭한 후 "속성(Properties)"을 선택하면 됩니다. 속성 창의 "권한(Permissions)" 탭에서 원하는 값으로 변경할 수 있습니다.
macOS에서는 오른쪽 버튼 클릭 후 "정보 가져오기(Get Info)"를 선택하고, "공유 및 권한(Sharing & Permissions)" 섹션을 확장하여 설정을 변경하면 됩니다.

변경하려면 권한(Privilege) 영역에서 해당 항목을 선택한 뒤 더 적절한 옵션을 고르면 됩니다.

물론 GUI 외에도 파일 권한을 변경하는 방법이 있습니다. 이어서 자세히 알아보겠습니다.
chmod 777 명령어로 권한 변경하기
터미널과 명령줄 인터페이스에 익숙하다면 명령어로도 권한을 변경할 수 있습니다.
chmod 명령어는 "change mode(모드 변경)"의 줄임말로, 접근 권한을 바꾸는 또 다른 표현입니다. 터미널을 열고 아래 명령어를 입력하세요.
chmod 777 /path/to/file
요약하면 chmod 777은 이 글에서 설명한 두 가지 개념(클래스와 권한)을 결합한 명령입니다. 즉, 접근 가능한 모든 사용자에게 파일을 읽고, 쓰고, 실행할 수 있는 권한을 부여하겠다는 의미입니다. 강력한 만큼 시스템 전체를 위험에 빠뜨릴 수도 있으므로 각별한 주의가 필요합니다.
마무리
파일 권한이 올바르게 설정되지 않으면 작업 진행에 걸림돌이 될 수 있습니다. 하지만 이는 의도된 설계입니다. 잠긴 시스템일수록 침해받기 어렵기 때문입니다. 다만 시스템이나 서버의 파일에 접근해야 한다면 권한을 변경하는 방법을 익혀두는 것이 확실한 역량이 됩니다.
정리하자면, chmod 777은 터미널에서 파일이나 폴더를 모든 사용자에게 개방할 때 사용하는 명령입니다. 필요할 때만 잠깐 사용하고, 작업이 끝나면 반드시 더 엄격한 권한으로 되돌리는 것이 안전합니다.
터미널로 할 수 있는 다른 작업이 궁금하다면 명령줄에서 복사·붙여넣기를 하는 방법을 다룬 글도 확인해 보세요. 파일 권한 관리 업무를 맡고 계신가요? 이 글이 도움이 되었다면 댓글로 알려주세요!