Linux 권한 관리 - chmod, chown 완벽 이해
Linux 파일 시스템의 권한 체계와 권한 변경 명령어를 상세히 알아봅니다.
권한 체계
chmod 755 file.sh # 권한 변경
chown user:group file # 소유자 변경
rwxr-xr-x = 755 # 권한 표기
권한 구조 이해
-rwxr-xr-x 1 user group 1234 Jan 1 00:00 file.sh
│└─┬┘└─┬┘└─┬┘
│ │ │ └── 기타 사용자 (other)
│ │ └────── 그룹 (group)
│ └────────── 소유자 (user/owner)
└───────────── 파일 타입 (- 일반, d 디렉토리, l 링크)
권한 종류
| 기호 | 숫자 | 의미 | 파일 | 디렉토리 |
|---|
| r | 4 | 읽기 | 내용 읽기 | 목록 보기 |
| w | 2 | 쓰기 | 내용 수정 | 파일 생성/삭제 |
| x | 1 | 실행 | 실행 | 디렉토리 접근 |
chmod - 권한 변경
# 숫자 방식
chmod 755 script.sh # rwxr-xr-x
chmod 644 file.txt # rw-r--r--
chmod 600 secret.key # rw-------
chmod 777 public/ # rwxrwxrwx (주의!)
# 기호 방식
chmod u+x script.sh # 소유자에 실행 권한 추가
chmod g-w file.txt # 그룹에서 쓰기 권한 제거
chmod o=r file.txt # 기타 사용자 읽기만 설정
chmod a+r file.txt # 모든 사용자에 읽기 추가
# 재귀적 적용 (디렉토리 하위 전체)
chmod -R 755 directory/
자주 사용하는 권한 조합
| 755 | rwxr-xr-x | 실행 파일, 디렉토리 |
| 644 | rw-r--r-- | 일반 파일 |
| 600 | rw------- | 비밀 파일 (SSH 키 등) |
| 700 | rwx------ | 개인 디렉토리 |
| 775 | rwxrwxr-x | 그룹 공유 디렉토리 |
| 664 | rw-rw-r-- | 그룹 공유 파일 |
chown - 소유자 변경
# 소유자만 변경
chown newuser file.txt
# 소유자와 그룹 변경
chown newuser:newgroup file.txt
# 그룹만 변경
chown :newgroup file.txt
chgrp newgroup file.txt
# 재귀적 적용
chown -R user:group directory/
# 참조 파일과 동일하게
chown --reference=ref.txt target.txt
특수 권한
# SetUID (4000) - 실행 시 소유자 권한으로
chmod 4755 script.sh # -rwsr-xr-x
# SetGID (2000) - 실행 시 그룹 권한으로
chmod 2755 directory/ # drwxr-sr-x
# Sticky Bit (1000) - 소유자만 삭제 가능
chmod 1777 /tmp # drwxrwxrwt
권한 확인
# 상세 목록
ls -la
# 숫자로 권한 확인
stat -c "%a %n" file.txt
# 디렉토리 권한만
ls -ld directory/
실전 예시
# 웹서버 설정
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
chmod 644 /var/www/html/*.html
# SSH 키 권한
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
# 로그 디렉토리
chmod 755 /var/log/myapp
chmod 644 /var/log/myapp/*.log