파일 권한 기초
Linux 시스템에서 모든 항목은 파일로 처리되며, 각 파일에는 접근 권한이 할당됩니다. 프로세스가 파일에 접근할 때 적용되는 권한은 실행자에 따라 달라집니다.
- 실행자와 파일 소유자가 동일할 경우, 파일 소유자 권한이 적용됩니다.
- 실행자가 파일 소속 그룹에 속할 경우, 파일 소속 그룹 권한이 적용됩니다.
- 위 두 조건에 해당하지 않을 경우, '기타' 권한이 적용됩니다.
권한 관리 방법
3.1 소유자 및 그룹 변경
chown user:group filename # 소유자와 그룹을 동시에 변경
chown --reference=source_file target_file # 소스 파일의 속성으로 대상 파일 변경
3.2 접근 권한 설정
chmod 755 script.sh # 실행 권한 포함된 권한 설정
3.3 새 파일 기본 권한
새 파일 생성 시 기본 권한: 666 - umask
계산 결과가 실행 권한(홀수)을 포함할 경우 +1, 짝수일 경우 유지
새 디렉토리 생성 시 기본 권한: 777 - umask
비-root 사용자의 umask 기본값: 002
root 사용자의 umask 기본값: 022
umask 확인: umask
umask 변경: umask 002
3.4 특수 권한
SUID: 실행 파일에 적용, 실행자에게 파일 소유자 권한 부여
chmod u+s file
chmod 4xxx file
chmod u-s file
SGID: 실행 파일에 적용 시 그룹 권한 부여, 디렉토리에 적용 시 새 파일 그룹 자동 상속
chmod g+s file
chmod 2xxx file
chmod g-s file
STICKY: 디렉토리에 적용, 해당 디렉토리 내 파일은 소유자만 삭제 가능
chmod o+t dir
chmod 1xxx dir
chmod o-t dir
3.5 특수 속성
i/a 속성
-i: 삭제/수정/이름 변경 불가 (읽기 전용)
chattr +i file
-a: 내용 추가만 가능, 삭제/수정 불가
chattr +a file
속성 확인: lsattr
3.6 ACL 설정
# 추가 사용자/그룹에 대한 권한 부여
# 적용 순서: 소유자 > 특정 사용자 > 소속 그룹 > 기타
setfacl -m u:wang:- file.txt # wang 사용자에게 권한 제거
setfacl -m g:admin:w file.txt # admin 그룹에 쓰기 권한 부여
# ACL 백업/복원
getfacl -R /path > acl_backup.txt
setfacl -R -b /path # ACL 초기화
setfacl --restore acl_backup.txt /path # ACL 복원
# 권한 확인
getfacl -R /path
# mask 설정
mask는 소유자와 other를 제외한 권한 최대값을 정의
사용자/그룹 권한은 mask와 AND 연산 후 적용됨