1. 리눅스 파일 권한이란?
리눅스 시스템에서 파일이나 디렉토리는 단순한 저장 공간 그 이상이다. 파일에 누가 접근할 수 있는지, 어떤 작업을 할 수 있는지를 결정하는 핵심 요소가 바로 파일 권한이다. 서버를 다루거나 백엔드 개발을 하다 보면 chmod, 777, 644 같은 숫자들을 자주 만나게 되는데, 그 개념을 제대로 이해하지 않으면 보안에 취약한 설정을 하게 될 수도 있다. 리눅스는 모든 파일과 디렉토리에 대해 **소유자(owner), 그룹(group), 기타 사용자(other)**의 접근 권한을 구분한다. 이들 각각에게 읽기(read), 쓰기(write), 실행(execute) 권한을 부여할 수 있다.
예시: ls -l 명령어 결과
-rw-r--r-- 1 yeji yeji 1024 Mar 30 myfile.txt
│ │ │ │
│ │ │ └─> 기타 사용자 권한: 읽기(r)만 허용
│ │ └─────> 그룹 권한: 읽기(r)만 허용
│ └────────> 소유자 권한: 읽기(r) + 쓰기(w) 허용
└──────────> 파일 유형 (-: 일반 파일, d: 디렉토리)
위 구조에서 -rw-r--r--처럼 10자리 권한 문자열을 통해 해당 파일이 누가, 무엇을 할 수 있는지를 알 수 있다.
2. 권한의 종류
권한 | 기호 | 설명 |
읽기 | r | 파일을 읽을 수 있음 (cat, less 등) |
쓰기 | w | 파일을 수정하거나 삭제할 수 있음 |
실행 | x | 파일을 실행할 수 있음 (스크립트, 프로그램 등) |
이러한 권한은 **세 사용자 그룹(owner/group/others)**에 대해 각각 설정할 수 있다.
3. 숫자 권한 (777, 644 등)의 의미
리눅스에서는 권한을 숫자로도 표현할 수 있는데, 3자리 숫자 하나하나가 다음을 의미한다:
777 → rwxrwxrwx
644 → rw-r--r--
755 → rwxr-xr-x
계산 방법: 각 권한은 숫자 값으로 변환된다.
- r (read) = 4
- w (write) = 2
- x (execute) = 1
예: rwx = 4 + 2 + 1 = 7
예: rw- = 4 + 2 + 0 = 6
예: r-- = 4 + 0 + 0 = 4
4. 자주 쓰는 권한 설정 예시
권한 숫자 | 의미 | 사용 예시 |
777 | 모두에게 모든 권한 부여 | 테스트 디렉토리 (주의 요망) |
755 | 소유자: 모든 권한 / 나머지: 읽기+실행 | 웹서버 루트 디렉토리 |
644 | 소유자: 읽기+쓰기 / 나머지: 읽기만 가능 | 일반 텍스트 파일 |
600 | 소유자만 읽기+쓰기, 보안 파일 | 환경설정 파일 (.env 등) |
400 | 소유자만 읽기 가능 | 공개키 파일, SSH |
5. chmod 명령어로 권한 변경하기
리눅스에서 파일 권한을 설정할 때 사용하는 명령어가 바로 chmod이다.
1) 숫자 방식
chmod 644 myfile.txt
chmod 755 myscript.sh
숫자 방식은 간단하고 빠르지만, 현재 어떤 권한이 있는지 모르면 실수하기 쉽다.
2) 기호 방식
chmod u+x script.sh # 소유자에게 실행 권한 추가
chmod g-w config.cfg # 그룹에게 쓰기 권한 제거
chmod o=r file.txt # 기타 사용자에게 읽기만 허용
기호 방식은 직관적이지만, 다소 복잡할 수 있다.
6. 디렉토리 권한의 의미
파일과 달리, 디렉토리에서는 권한이 다음과 같이 작용한다:
권한 | 디렉토리에서의 의미 |
r | 디렉토리 안의 파일 목록 조회 가능 (ls) |
w | 디렉토리 내에서 파일 생성/삭제 가능 |
x | 디렉토리에 접근 가능 (cd, ls 파일명) |
chmod 755 myfolder/ # 다른 사람이 디렉토리 진입 가능
chmod 700 secure/ # 소유자만 접근 가능
7. 파일 소유자 및 그룹 변경하기 (chown, chgrp)
리눅스에서는 파일이나 디렉토리마다 소유자(owner)와 그룹(group)이 지정되어 있으며, 권한 역시 이 기준에 따라 적용된다. 시스템 관리나 협업 환경에서 사용자 간 권한을 조정할 일이 많기 때문에 chown, chgrp 명령어를 반드시 익혀둘 필요가 있다.
7-1. chown 명령어: 소유자 변경
chown 사용자이름 파일명
chown yeji config.txt
해당 명령어는 파일의 소유자를 변경한다. 기본적으로 루트 사용자만 다른 사용자로 변경할 수 있으며, 일반 사용자는 자신이 소유한 파일에 대해서만 실행할 수 있다.
7-2. 소유자와 그룹을 동시에 변경
chown 사용자:그룹 파일명
chown devuser:devteam server.log
콜론(:)을 사용하여 한 번에 소유자와 그룹을 동시에 변경할 수 있다. 이 방식은 개발 서버에서 여러 명이 공동으로 파일을 다뤄야 할 때 특히 유용하다.
7-3. 디렉토리 및 하위 파일 일괄 변경
chown -R yeji:devteam /home/dev/
-R 옵션은 **recursive(재귀적)**으로 하위 디렉토리 및 모든 파일까지 한 번에 적용된다. 이 명령어는 프로젝트 폴더의 권한을 일괄적으로 정리할 때 자주 사용된다.
7-4. chgrp 명령어: 그룹만 변경
chgrp dev config.txt
그룹만 따로 바꿀 경우 chgrp 명령어를 사용하면 된다. 여러 사용자가 같은 그룹으로 묶여 있을 때, 해당 그룹에만 파일 수정 권한을 주는 방식으로 권한을 효율적으로 분리할 수 있다.
📌 실무 팁
- 웹 서버 루트 디렉토리 /var/www/html의 소유자를 www-data로 설정하고 싶다면?
chown -R www-data:www-data /var/www/html
- 공동작업을 위해 project/ 디렉토리 내 모든 파일의 그룹을 devgroup으로 설정하고 싶다면?
chgrp -R devgroup project/
이처럼 chown/chgrp는 파일 접근 제어의 핵심 명령어이며, 잘못 사용하면 다른 사용자가 파일을 전혀 읽지 못하거나, 반대로 민감한 정보를 누구나 열람할 수 있게 되는 문제가 발생할 수 있다.
8. 실무에서 주의해야 할 점
리눅스 권한 설정은 단순한 편의 기능이 아니라, 보안과 운영 안정성에 직결되는 중요한 요소다. 특히 서버를 관리하거나 클라우드 환경에서 서비스 운영을 할 경우, 작은 실수 하나로도 보안 사고가 발생할 수 있다.
8-1. 777 권한의 위험성
가장 흔한 실수는 "잘 안 되니까 그냥 777 줘버리자"는 선택이다.
chmod 777 somefile
이렇게 설정하면 누구나 읽고 쓰고 실행할 수 있게 되는 치명적인 보안 구멍이 생긴다. 웹 서버라면 외부에서 공격자가 스크립트를 업로드하거나 실행하는 일이 가능해진다. 절대로 운영 서버에서 777 권한을 사용하는 일은 없어야 하며, 꼭 필요한 경우에도 테스트용으로만 제한적으로 사용해야 한다.
8-2. .ssh 디렉토리 및 키 파일 권한
SSH 접속을 사용할 경우, 개인 키와 설정 파일에 대한 권한도 민감하다.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
이 권한이 맞지 않으면 SSH 접속 자체가 거부된다. 실제로 Permission denied (publickey) 오류가 뜨는 경우, 대부분이 잘못된 권한 설정 때문인 경우가 많다.
8-3. 실행 권한 잊지 말기
셸 스크립트나 실행 파일은 반드시 x 권한이 있어야 실행된다.
chmod +x deploy.sh
./deploy.sh
실행 권한이 없으면 Permission denied 오류가 발생하므로, 배포 스크립트나 개발용 CLI 도구 작성 시에는 항상 체크해야 한다.
8-4. 보안 정책과 자동화 툴 적용
CI/CD 파이프라인, Ansible, Terraform 같은 자동화 도구를 사용할 경우에도 파일 권한 설정은 항상 포함되어야 한다. 예를 들어 배포 중 생성된 로그 파일이나 설정 파일의 권한을 잘못 설정하면 보안 이슈로 이어질 수 있다.
'컴퓨터공학' 카테고리의 다른 글
데이터베이스란 무엇인가? 개념부터 이해하자 (0) | 2025.03.27 |
---|---|
시스템 호출(System Call)과 주요 종류 (0) | 2025.03.27 |
VPN(Virtual Private Network)의 원리와 종류 (0) | 2025.03.26 |
대칭키 vs 비대칭키 암호화 개념 및 활용 (0) | 2025.03.19 |
가비지 컬렉션(GC) 원리와 메모리 관리 (0) | 2025.03.18 |