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 링크)


권한 종류







기호숫자의미파일디렉토리
r4읽기내용 읽기목록 보기
w2쓰기내용 수정파일 생성/삭제
x1실행실행디렉토리 접근


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/


자주 사용하는 권한 조합









755rwxr-xr-x실행 파일, 디렉토리
644rw-r--r--일반 파일
600rw-------비밀 파일 (SSH 키 등)
700rwx------개인 디렉토리
775rwxrwxr-x그룹 공유 디렉토리
664rw-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