서버

Linux Access Control Lists (ACLs) 파일과 디렉토리 권한 관리의 새로운 차원

이영훈닷컴 2025. 4. 7. 10:08
728x90

Linux에서 파일과 디렉토리 권한 관리는 기본적인 Unix 권한 모델만으로는 부족한 경우가 많습니다. 특히 여러 사용자와 그룹이 동일한 자원에 접근해야 할 때 이를 효율적으로 관리하기가 어려울 수 있는데요. 이 문제를 해결하기 위해 등장한 것이 바로 ‘Access Control Lists(ACLs)’입니다. 이번 블로그 포스트에서는 ACLs의 개념부터 활용 방법까지 간단히 정리해 보겠습니다.

ACLs란 무엇인가요?

ACLs는 Linux에서 파일과 디렉토리 권한을 사용자 및 그룹 단위로 세분화하여 관리할 수 있게 해주는 확장된 권한 관리 메커니즘입니다. 표준 Unix 권한 모델의 한계를 보완하며, 다수의 사용자나 그룹이 자원에 접근해야 하는 상황에서 유용하게 사용됩니다.

ACLs의 구성 요소

ACL은 각 파일과 디렉토리에 연결되어 있으며, 여러 ‘엔트리(entry)’로 구성됩니다. 주요 엔트리 유형은 다음과 같습니다:
User entries: 특정 사용자에 대한 권한 정의
Group entries: 특정 그룹에 대한 권한 정의
Other entries: 위 사용자 및 그룹에 해당하지 않는 나머지 사용자들에 대한 권한 정의

각 엔트리에는 읽기(r), 쓰기(w), 실행(x)과 같은 표준 권한이 지정됩니다.

ACLs 확인하기

특정 파일이나 디렉토리의 ACL을 확인하려면 getfacl 명령어를 사용합니다. 예를 들어:

bash
$ getfacl myfile.txt
# file: myfile.txt
# owner: alice
# group: staff
user::rw-
user:bob:r–
group::r–
mask::r–
other::—

위 결과에서 볼 수 있듯이, 파일의 소유자인 alice는 읽기와 쓰기 권한을, 사용자 bob은 읽기 전용 권한을, 나머지 사용자들은 아무 권한도 갖지 않습니다.

ACLs 수정하기

파일이나 디렉토리의 ACL을 변경하려면 setfacl 명령어를 사용합니다. 예를 들어, 사용자 bob에게 읽기와 쓰기 권한을 부여하려면 다음과 같이 입력합니다:

bash
$ setfacl -m u:bob:rw myfile.txt

특정 사용자의 ACL을 제거하려면 -x 옵션을 사용합니다:

bash
$ setfacl -x u:bob myfile.txt

디폴트 ACLs 설정하기

디렉토리에는 디폴트 ACL을 설정할 수도 있습니다. 이는 해당 디렉토리 내에서 새로 생성되는 파일과 디렉토리에 자동으로 적용되는 템플릿 역할을 합니다. 예를 들어, 사용자 bob에게 디렉토리 mydir에 대한 읽기와 쓰기 디폴트 권한을 설정하려면:

bash
$ setfacl -m d:u:bob:rw mydir

결론

Linux ACLs는 파일과 디렉토리에 대한 권한 관리를 보다 유연하고 세밀하게 해줍니다. 이를 통해 표준 Unix 권한 모델이 제공하지 못하는 세부적인 제어가 가능해지며, 특히 협업이 필요한 환경에서 그 진가를 발휘합니다. ACLs를 활용해 보다 효과적인 권한 관리를 시작해 보세요!

728x90