리눅스 파일 접근 제어는 소유권(Owner) 과 허가권(Permission) 으로만 충분할 것 같지만, 실무에서는 더 세밀한 권한 관리와 강력한 보호가 필요합니다. 이때 사용하는 것이 ACL(Access Control List) 과 속성(Attributes) 입니다.
- ACL은 "누가 / 무엇을 할 수 있는지" 를 확장하는 도구
- 속성은 "그 무엇도 / 혹은 특정 방식만 할 수 있게" 만드는 도구
- 둘을 함께 사용하면, 운영 환경에서 발생할 수 있는 의도치 않은 변경과 악의적인 접근을 모두 방어할 수 있습니다.
권한 관리 4단계 모델
[1] 소유권(Owner) → 파일의 주인과 소속 그룹
[2] 허가권(Permission) → 주체별 rwx 권한
[3] ACL → 개별 사용자·그룹 세밀 제어
[4] 속성(Attribute) → 권한과 무관한 행동 제한
1. ACL (Access Control List)
1-1. ACL이 필요한 이유
기본 권한 모델(rwx)은 소유자 / 그룹 / 기타(others) 3단계입니다.
하지만 그룹에 속하지 않은 개별 사용자에게 권한을 부여하거나 제한하는 것은 불가능합니다.
예: user1은 읽기만, user2는 읽기+쓰기, 다른 사람은 접근 불가
→ chmod로는 불가능, ACL 필요
1-2. ACL 구조 예시
# getfacl sample.txt
# file: sample.txt
# owner: root
# group: root
user::rw-
user:user1:r--
user:user2:rw-
group::r--
mask::rw-
other::---
- user:user1:r-- → user1 읽기만 가능
- user:user2:rw- → user2 읽기·쓰기 가능
- mask → ACL의 최대 허용 권한 범위
1-3. ACL 명령어
# ACL 조회
getfacl filename
# ACL 부여 (user2에 rw 권한)
setfacl -m u:user2:rw filename
# ACL 제거
setfacl -x u:user2 filename
# ACL 전체 초기화
setfacl -b filename
📌 디렉터리 ACL 적용 시 -R 옵션으로 하위 경로까지 재귀 적용 가능
1-4. ACL 사용 시 주의사항
- ACL 지원 여부 확인파일 시스템 마운트 옵션에 acl이 있어야 함
- mount | grep acl
- mask 값 확인 필수 — ACL 권한이 mask보다 크면 무효
- ls -l 결과에 + 표시가 뜨면 ACL 적용된 파일
- -rw-r-----+ 1 root root 1234 Aug 9 test.txt
2. 파일 속성(Attributes)
2-1. 속성이란?
속성은 소유권·허가권보다 우선 적용되어, 파일의 행동 자체를 제한하거나 특수 기능을 부여합니다.
주로 ext 계열 파일 시스템(ext2/3/4)에서 사용하며, lsattr / chattr 명령어로 제어합니다.
2-2. 주요 속성 플래그
속성 설명 활용 예시
| i (immutable) | 수정·삭제·이름 변경 불가 | /etc/passwd 보호 |
| a (append only) | 기존 내용 뒤에만 추가 가능 | 로그 무결성 확보 |
| A (no atime update) | atime 갱신 방지 | SSD 수명 연장 |
| S (synchronous updates) | 변경 즉시 디스크 기록 | 전원 장애 대비 |
| d (no dump) | 백업 제외 | 임시파일 제외 설정 |
2-3. 속성 명령어
# 속성 확인
lsattr filename
# ----i-------- filename
# 속성 추가 (immutable)
sudo chattr +i filename
# 속성 제거
sudo chattr -i filename
- + → 속성 추가
- - → 속성 제거
- = → 지정 속성만 유지
2-4. 속성 주의사항
- root도 제한: +i 속성이면 root도 수정·삭제 불가
- 파일 시스템 의존성: ext 계열은 대부분 지원, XFS·btrfs는 일부 속성만 지원
- 백업 툴 옵션: rsync 등은 -A 옵션으로 속성까지 복사해야 함
3. ACL vs 속성 비교
| 구분 | ACL | 속성 |
| 목적 | 특정 사용자·그룹의 세밀한 권한 제어 | 파일의 동작 자체 제한 |
| 적용 범위 | 권한 모델 확장 | 권한 모델 무시 가능 |
| 주요 명령어 | getfacl, setfacl | lsattr, chattr |
| 예시 | user2만 읽기 가능 | 누구도 삭제 불가 (+i) |
4. 실무 예시 — ACL과 속성 조합
- /etc/passwd: chattr +i → 시스템 계정 정보 불변화
- /var/log/secure:
- chattr +a → 로그 삭제·수정 불가, append만 허용
- setfacl -m u:auditor:r-- → 감사 담당자만 읽기 가능
이렇게 하면 권한 모델 + 세밀 제어 + 행동 제한이 동시에 적용되어 보안성이 극대화됩니다.
'CS > Linux' 카테고리의 다른 글
| [Linux] 소스 빌드 (make) (1) | 2025.08.10 |
|---|---|
| [Linux] 백업·복구 도구 비교 (dd, dump, tar, cpio, rsync) (2) | 2025.08.09 |
| [Linux] 네트워크 인터페이스와 Docker 네트워크 트래픽 구조 분석 (2) | 2025.07.30 |
| [Linux] X Window System (3) | 2025.07.27 |
| [Linux] systemd 기반 시스템 운영에 필요한 필수 명령어 (1) | 2025.07.27 |