개요
`setfacl`은 파일 시스템 객체에 대한 보다 유연한 권한 관리를 가능하게 합니다. 특정 사용자나 그룹에 읽기, 쓰기, 실행 권한을 개별적으로 부여하거나 제거할 수 있으며, 기본 ACL을 설정하여 새 파일이나 디렉토리가 생성될 때 자동으로 ACL을 상속받도록 할 수도 있습니다. 이는 여러 사용자가 공유하는 환경에서 정교한 권한 관리가 필요할 때 특히 유용합니다.
주요 기능
- 특정 사용자/그룹에 대한 개별 권한 설정
- 기본(Default) ACL 설정 및 상속
- 기존 ACL 수정 및 제거
- 재귀적(Recursive) 권한 적용
주요 옵션
`setfacl`은 다양한 옵션을 통해 ACL을 정교하게 제어할 수 있습니다. 다음은 자주 사용되는 주요 옵션들입니다.
ACL 설정 및 수정
ACL 제거
기타
생성된 명령어:
명령어를 조합해 보세요.
설명:
`setfacl` 명령어를 실행합니다.
위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.
사용 예시
`setfacl` 명령어를 사용하여 파일 및 디렉토리의 ACL을 관리하는 다양한 시나리오를 보여줍니다.
특정 사용자에게 읽기/쓰기 권한 부여
setfacl -m u:user1:rw testfile.txt
`testfile.txt` 파일에 `user1` 사용자에게 읽기(r)와 쓰기(w) 권한을 부여합니다.
특정 그룹에게 읽기 전용 권한 부여
setfacl -m g:groupA:r shared_dir
`shared_dir` 디렉토리에 `groupA` 그룹에게 읽기(r) 권한을 부여합니다.
디렉토리에 기본(Default) ACL 설정
setfacl -m d:u:user2:rwx project_data
`project_data` 디렉토리에 `user2` 사용자가 새로 생성되는 파일에 읽기/쓰기 권한을, 새로 생성되는 디렉토리에 읽기/쓰기/실행 권한을 갖도록 기본 ACL을 설정합니다.
재귀적으로 ACL 적용
setfacl -R -m u:user3:r data_archive
`data_archive` 디렉토리와 그 하위의 모든 파일 및 디렉토리에 `user3` 사용자에게 읽기 권한을 재귀적으로 부여합니다.
특정 사용자 ACL 엔트리 제거
setfacl -x u:user1 testfile.txt
`testfile.txt` 파일에서 `user1` 사용자에 대한 ACL 엔트리를 제거합니다.
모든 확장 ACL 엔트리 제거
setfacl -b config_dir
`config_dir` 디렉토리의 모든 확장 ACL 엔트리를 제거합니다. (기본 권한은 유지)
기본(Default) ACL 엔트리 제거
setfacl -k project_data
`project_data` 디렉토리에서 설정된 모든 기본 ACL 엔트리를 제거합니다.
설치
`setfacl` 명령어는 일반적으로 `acl` 패키지의 일부로 제공됩니다. 대부분의 리눅스 배포판에서는 기본적으로 설치되어 있지만, 만약 명령어를 찾을 수 없다면 다음 명령어를 사용하여 설치할 수 있습니다.
Debian/Ubuntu 기반 시스템
sudo apt update && sudo apt install acl
APT 패키지 관리자를 사용하여 `acl` 패키지를 설치합니다.
RHEL/CentOS/Fedora 기반 시스템
sudo yum install acl
# 또는
sudo dnf install acl
YUM 또는 DNF 패키지 관리자를 사용하여 `acl` 패키지를 설치합니다.
팁 & 주의사항
`setfacl`을 효과적으로 사용하고 잠재적인 문제를 방지하기 위한 팁과 주의사항입니다.
getfacl과 함께 사용
`setfacl`로 ACL을 설정한 후에는 `getfacl <파일/디렉토리>` 명령어를 사용하여 현재 설정된 ACL을 확인하는 것이 중요합니다. 이는 의도한 대로 권한이 적용되었는지 검증하는 데 도움이 됩니다.
- 확인 명령어: getfacl <파일/디렉토리>
마스크(mask) 권한 이해
ACL 엔트리에는 '마스크(mask)' 엔트리가 존재할 수 있습니다. 마스크는 모든 사용자 및 그룹 ACL 엔트리에 적용되는 최대 유효 권한을 정의합니다. 즉, 특정 사용자나 그룹에 부여된 권한이 마스크 권한보다 높을 경우, 실제 적용되는 권한은 마스크에 의해 제한됩니다. `setfacl`로 ACL을 설정할 때 마스크가 자동으로 조정될 수 있으므로, `getfacl`로 확인하는 것이 좋습니다.
- 역할: 모든 사용자/그룹 ACL 엔트리의 최대 유효 권한 제한
- 확인: getfacl 출력에서 'mask::' 부분을 확인
기본 권한과의 상호작용
ACL이 설정된 파일이나 디렉토리는 `ls -l` 명령어로 볼 때 권한 문자열 끝에 `+` 기호가 붙습니다. 이는 표준 Unix 권한 외에 추가적인 ACL이 적용되었음을 나타냅니다. ACL은 기본 Unix 권한 모델을 보완하지만, 때로는 복잡성을 증가시킬 수 있으므로 신중하게 사용해야 합니다.
- ACL 적용 표시: ls -l 출력 시 권한 문자열 끝에 '+' 표시
재귀적 적용 (-R) 시 주의
`-R` 옵션을 사용하여 ACL을 재귀적으로 적용할 때는 신중해야 합니다. 특히 `-b` (모든 ACL 제거)와 함께 사용하면 하위 모든 파일과 디렉토리의 ACL이 의도치 않게 제거될 수 있습니다. 항상 `--test` 옵션으로 먼저 결과를 확인하거나 중요한 데이터에는 백업 후 적용하는 것을 권장합니다.
- 권장 사항: --test 옵션으로 사전 확인, 중요한 데이터는 백업 후 적용