> 패키지 및 시스템 관리 > acl

ACL: 접근 제어 목록 관리

ACL(Access Control List)은 파일 및 디렉토리에 대한 세분화된 권한을 설정할 수 있도록 해주는 리눅스 시스템의 기능입니다. 기존의 사용자, 그룹, 기타 권한 외에 특정 사용자나 그룹에 대한 개별적인 읽기, 쓰기, 실행 권한을 부여하거나 제거할 수 있습니다. acl 자체는 명령어가 아니며, 주로 getfaclsetfacl 명령어를 통해 관리됩니다.

개요

ACL은 전통적인 Unix 권한 모델(소유자, 그룹, 기타)을 넘어선 유연한 권한 관리를 제공합니다. 특정 사용자나 그룹에 대해 파일 또는 디렉토리에 대한 접근 권한을 명시적으로 지정할 수 있습니다. 이는 여러 사용자가 공유하는 환경에서 복잡한 권한 요구사항을 충족시키는 데 유용합니다.

주요 특징

  • 세분화된 권한 제어
  • 특정 사용자/그룹에 대한 권한 부여
  • 기본 권한(umask)과 함께 작동
  • 디렉토리의 기본 ACL 설정 가능

설치

`acl` 기능 자체는 리눅스 커널에 내장되어 있지만, `getfacl` 및 `setfacl` 명령어를 사용하기 위해서는 `acl` 패키지를 설치해야 합니다. 대부분의 리눅스 배포판에서 기본으로 설치되어 있지 않을 수 있습니다.

Debian/Ubuntu

sudo apt update && sudo apt install acl

Debian 또는 Ubuntu 기반 시스템에서 `acl` 패키지를 설치하는 명령어입니다.

CentOS/RHEL/Fedora

sudo yum install acl

CentOS, RHEL 또는 Fedora 기반 시스템에서 `acl` 패키지를 설치하는 명령어입니다.

사용 예시

ACL은 주로 `getfacl` (ACL 조회)과 `setfacl` (ACL 설정) 명령어를 통해 관리됩니다. 다음은 몇 가지 일반적인 사용 예시입니다.

파일의 ACL 조회

getfacl my_file.txt

`getfacl` 명령어를 사용하여 특정 파일 또는 디렉토리의 현재 ACL을 확인합니다.

특정 사용자에게 읽기/쓰기 권한 부여

setfacl -m u:user1:rw my_file.txt

`setfacl -m` 옵션을 사용하여 'user1' 사용자에게 'my_file.txt'에 대한 읽기(r) 및 쓰기(w) 권한을 부여합니다.

특정 그룹에 실행 권한 부여

setfacl -m g:dev_group:x my_script.sh

`setfacl -m` 옵션을 사용하여 'dev_group' 그룹에 'my_script.sh'에 대한 실행(x) 권한을 부여합니다.

ACL 엔트리 제거

setfacl -x u:user1 my_file.txt

`setfacl -x` 옵션을 사용하여 'user1'에 대한 ACL 엔트리를 제거합니다.

디렉토리에 기본 ACL 설정

setfacl -m d:u:user2:rwx my_directory/

새로 생성되는 파일이나 디렉토리가 특정 ACL을 상속받도록 디렉토리에 기본 ACL을 설정합니다. `d:` 접두사를 사용합니다.

모든 ACL 제거

setfacl -b my_file.txt

`setfacl -b` 옵션을 사용하여 파일 또는 디렉토리의 모든 확장 ACL 엔트리를 제거하고, 전통적인 권한으로 되돌립니다.

팁 & 주의사항

ACL을 사용할 때는 기존 권한 시스템과의 상호작용을 이해하는 것이 중요합니다.

ACL과 전통적인 권한

  • ACL이 설정된 파일/디렉토리의 ls -l 출력에는 권한 문자열 끝에 + 기호가 붙습니다.
  • ACL은 전통적인 권한(소유자, 그룹, 기타) 위에 추가적인 권한을 부여합니다. mask 엔트리는 ACL의 최대 유효 권한을 제한합니다.
  • ACL을 너무 복잡하게 설정하면 권한 관리가 어려워질 수 있으므로, 필요한 경우에만 신중하게 사용해야 합니다.

mask 엔트리 이해

ACL을 설정하면 mask 엔트리가 자동으로 생성되거나 업데이트될 수 있습니다. 이 mask는 사용자(u:), 그룹(g:), 명명된 사용자(u:name:), 명명된 그룹(g:name:) 엔트리에 부여된 최대 유효 권한을 정의합니다. mask보다 더 많은 권한을 부여하려 해도 mask에 의해 제한됩니다. setfacl -m m::rw와 같이 수동으로 mask를 설정할 수 있습니다.

파일 시스템 지원

ACL을 사용하려면 파일 시스템이 ACL을 지원해야 합니다. ext2, ext3, ext4, XFS 등 대부분의 최신 리눅스 파일 시스템은 ACL을 지원합니다. 파일 시스템 마운트 시 acl 옵션이 활성화되어 있는지 확인해야 할 수 있습니다 (예: /etc/fstab).



동일 카테고리 명령어