Linux 파일 시스템의 ACL 제어

1.ACL 기본 개념

기존 UGO 권한 체계는 특정 유저/그룹에만 접근 제어를 적용할 수 있는 한계가 있습니다. 세밀한 권한 관리를 위해 ACL(Access Control List)을 사용할 수 있습니다. ACL 설정은 root 권한이 필요하며, getfacl/setfacl 명령어로 관리합니다.

// 테스트 파일 준비
[root@lqz ~]# cp /etc/passwd /root/passwd
[root@lqz ~]# ll passwd
-rw-r--r-- 1 root root 0 10-26 13:59 /home/test.txt

// 기본 ACL 구조 확인
[root@lqz ~]# getfacl passwd 
# file: passwd
# owner: root
# group: root
user::rw-   // 소유자 권한
group::r--  // 소유 그룹 권한
other::r--  // 기타 사용자 권한

1.ACL 권한 설정 예시

-rw-r--r-- 1 root root 1380 Feb 27 11:25 passwd

alice: 읽기/쓰기 권한
bgx: 접근 금지
jack: 읽기 권한
익명 사용자: 읽기/쓰기 권한


// 사용자 생성
[root@lqz ~]# useradd alice
[root@lqz ~]# useradd bgx
[root@lqz ~]# useradd jack

// 개별 권한 설정
[root@lqz ~]# setfacl -m u:alice:rw passwd
[root@lqz ~]# setfacl -m u:bgx:- passwd
[root@lqz ~]# setfacl -m o::rw passwd
[root@lqz ~]# setfacl -m g:jack:r passwd

// 권한 우선순위 규칙
1. ACL 우선순위가 높은 규칙이 적용됨
2. 다중 그룹 권한이 있을 경우 최대 권한이 적용됨

2.ACL 정보 조회

[root@lqz ~]# ll passwd
-rw-rw-rw-+ 1 root root 1531 Jan 26 07:52 passwd

[root@lqz ~]# getfacl passwd
# file: passwd
# owner: root
# group: root
user::rw-
user:bgx:---
user:alice:rw-
group::r--
group:jack:r--
mask::rw-
other::rw-

3.ACL 제거 방법

// 특정 그룹 권한 제거
[root@lqz ~]# setfacl -x g:jack passwd

// 특정 사용자 권한 제거
[root@lqz ~]# setfacl -x u:bgx passwd

// 전체 ACL 제거
[root@lqz ~]# setfacl -b passwd

// 디렉토리 기본 ACL 제거
[root@lqz ~]# setfacl -k dir

4.도움말 확인

[root@lqz ~]# man setfacl

// ACL 복사 예제
[root@lqz ~]# setfacl -m u:alice:rw,u:bgx:r,g:jack:rw file1
[root@lqz ~]# getfacl file1 |setfacl --set-file=- file2

2.ACL 마스크 기능

mask는 특정 사용자/그룹의 최대 권한을 제한하는 역할을 합니다. 마스크 값은 ACL 설정 시 자동 계산되며, 명시적으로 조정할 수 있습니다.

// 마스크 권한 제한
[root@lqz ~]# setfacl -m mask::rw filename

핵심 정리

  1. 마스크는 소유자와 other 제외한 모든 접근자에 영향
  2. 실제 최대 권한 결정 요소
  3. ACL 재설정 시 마스크 값 초기화됨

3.ACL 기본 권한

default ACL은 디렉토리 내 새 파일에 자동으로 상속되는 권한입니다.

// 디렉토리 및 하위 파일 권한 설정
[root@lqz ~]# setfacl -R -m u:alice:rwX /opt
[root@lqz ~]# setfacl -m d:u:alice:rwX /opt

// 결과 확인
[root@linux-node1 ~]# getfacl /opt/
default:user:alice:rwx
default:group::rwx
default:mask::rwx
default:other::rwx

4.ACL 실무 사례

사례 1: 파일 권한 관리

요구사항: tom 소유, mary 읽기/쓰기, admin 그룹 읽기/쓰기/실행, jack 읽기, 나머지 차단

// 사용자 및 그룹 준비
[root@lqz ~]# useradd tom
[root@lqz ~]# useradd mary
[root@lqz ~]# groupadd admin
[root@lqz ~]# gpasswd -a mary admin

// 파일 준비
[root@lqz ~]# cp /etc/passwd /root/
[root@lqz ~]# chown tom:admin passwd
[root@lqz ~]# chmod 644 passwd

// ACL 적용
[root@lqz ~]# setfacl -m u::rwx,u:mary:rw,u:jack:r,g:admin:rwx,o::- passwd

// 결과 확인
[root@lqz ~]# getfacl passwd
user::rwx
user:jack:r--
user:mary:rw-
group:admin:rwx
mask::rwx
other::---

사례 2: 디렉토리 권한 관리

요구사항: controller 그룹 소유, sodor 그룹 읽기/쓰기/실행, james 사용자 접근 금지

// 그룹 및 사용자 생성
[root@lqz ~]# groupadd controller
[root@lqz ~]# groupadd sodor
[root@lqz ~]# useradd student -G controller
[root@lqz ~]# useradd thomas -G sodor
[root@lqz ~]# useradd james -G sodor

// 디렉토리 준비
[root@lqz ~]# mkdir /shares/steamies -p
[root@lqz ~]# chown -R :controller /shares/steamies/
[root@lqz ~]# chmod g+s /shares/steamies/

// ACL 설정
[root@lqz ~]# setfacl -R -m g:sodor:rwX,u:james:- /shares/steamies/
[root@lqz ~]# setfacl -R -m d:g:sodor:rwX,d:u:james:- /shares/steamies/

// 결과 확인
[root@lqz steamies]# getfacl /shares/steamies/
group:sodor:rwx
user:james:---
default:group:sodor:rwx
default:user:james:---

태그: linux ACL 파일 시스템 권한 POSIX 권한 서버 관리

10월 9일 05:45에 게시됨