컴퓨터공학

리눅스 파일 권한 관리 (777, 644, chmod 개념)

nyambu 2025. 3. 26. 22:00

리눅스 파일 권한 관리 (777, 644, chmod 개념)
리눅스 파일 권한 관리 (777, 644, chmod 개념)

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 같은 자동화 도구를 사용할 경우에도 파일 권한 설정은 항상 포함되어야 한다. 예를 들어 배포 중 생성된 로그 파일이나 설정 파일의 권한을 잘못 설정하면 보안 이슈로 이어질 수 있다.