/엔지니어/보안 설정/파일 권한 완전 가이드 — chmod · chown
보안 설정초급UbuntuDebianCentOSchmodchownacl

파일 권한 완전 가이드 — chmod · chown · ACL

chmod 숫자/기호 표기, chown 소유자 변경, umask 기본값 설정, setfacl/getfacl로 ACL 세밀한 권한 제어까지 실무 권한 관리를 정리합니다.

권한 표기 이해

CODE
-rwxr-xr-- 1 alice developers 4096 May 27 10:00 script.sh
│└──┘└──┘└──┘
│  U   G   O    U=소유자(User), G=그룹(Group), O=기타(Other)
│
└─ 파일 타입 (- 파일, d 디렉터리, l 링크)

r = 읽기(4)  w = 쓰기(2)  x = 실행(1)  - = 없음(0)

chmod — 권한 변경

Bash
# 숫자 표기
chmod 755 script.sh     # rwxr-xr-x
chmod 644 file.txt      # rw-r--r--
chmod 600 secret.key    # rw-------
chmod 777 dir/          # rwxrwxrwx (위험)

# 기호 표기
chmod u+x script.sh     # 소유자에 실행 추가
chmod g-w file.txt      # 그룹에서 쓰기 제거
chmod o=r file.txt      # 기타에 읽기만
chmod a+r file.txt      # 모든 사람에 읽기 추가
chmod ug=rw,o= file.txt # 소유자·그룹 rw, 기타 없음

# 재귀 적용
chmod -R 755 /var/www/html

# 파일은 644, 디렉터리는 755로 구분 적용
find /var/www -type f -exec chmod 644 {} \;
find /var/www -type d -exec chmod 755 {} \;

chown — 소유자 변경

Bash
# 소유자 변경
chown alice file.txt

# 소유자:그룹 동시 변경
chown alice:developers file.txt

# 그룹만 변경
chown :developers file.txt
chgrp developers file.txt

# 재귀 적용
chown -R deploy:www-data /var/www/myapp

특수 권한 비트

Bash
# SUID — 소유자 권한으로 실행
chmod u+s /usr/bin/sudo       # ls -la 시 -rwsr-xr-x

# SGID — 그룹 권한으로 실행 / 디렉터리 내 파일 그룹 상속
chmod g+s /shared/dir/

# Sticky Bit — 소유자만 삭제 가능 (/tmp 등)
chmod +t /tmp
ls -ld /tmp                   # drwxrwxrwt

# 숫자로: 4=SUID, 2=SGID, 1=Sticky
chmod 4755 mybin    # SUID + 755
chmod 1777 /tmp     # Sticky + 777

umask — 기본 권한 마스크

Bash
# 현재 umask 확인
umask           # 0022 (기본값)

# 파일 기본권한 = 666 - umask = 644
# 디렉터리 기본권한 = 777 - umask = 755

# 더 엄격한 umask (그룹·기타 읽기도 금지)
umask 077       # 파일 600, 디렉터리 700

# 영구 적용
echo "umask 022" >> ~/.bashrc

ACL — 세밀한 권한 제어

표준 권한(UGO)으로 처리하기 어려운 복잡한 시나리오에 사용합니다.

Bash
# ACL 패키지 설치
sudo apt install -y acl

# ACL 설정
setfacl -m u:bob:rw file.txt        # bob에게 rw 권한
setfacl -m g:devops:rx /project/    # devops 그룹에 rx
setfacl -m o::- file.txt            # 기타에 권한 없음

# 기본 ACL (디렉터리 — 새 파일에 자동 적용)
setfacl -d -m u:ci:rw /deploy/

# ACL 확인
getfacl file.txt
getfacl -R /project/

# ACL 삭제
setfacl -x u:bob file.txt           # 특정 사용자 ACL 제거
setfacl -b file.txt                 # 모든 ACL 제거

# 복사·백업
getfacl -R /project/ > acl_backup.txt
setfacl --restore=acl_backup.txt
#chmod#chown#acl#umask#파일권한#linux
편집 안내 · Editorial Note

이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.