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

ACL: 접근 제어 목록 관리

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

개요

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`).


동일 카테고리 명령어