[ACL] 특정 LDAP 사용자만 폴더 접근 권한 부여

mimic·2026년 9월 10일
명령어만 보고 싶어요
setfacl -R -m u:$username:rwx -m d:u:$username:rwx $폴더
nohup setfacl -R -m u:$username:rwx -m d:u:$username:rwx $폴더 > setfacl_result.log 2>&1 &

개요

ACL이란?

ACL은 기존 Linux 권한 체계에 사람·그룹 별 예외 권한을 추가하는 기능입니다.
리눅스 권한은 보통 소유자→그룹→기타 사용자 순으로 읽기·쓰기·실행 권한이 부여됩니다.
특정 계정을 지정하여 위 권한 구조를 무시하고 별도의 권한 체계를 만들어 적용하고 싶을 때 ACL을 사용할 수 있습니다.

그룹 설정 비교

명령어 또는 방법설정 방식
chmod소유자·그룹·기타 사용자의 기본 권한 변경
chown파일·폴더의 소유자 또는 그룹 변경
/etc/group 또는 LDAP 그룹사용자를 특정 그룹에 포함시켜 그룹의 권한과 동일한 권한이 사용자에게 상속됨
setfacl(ACL) 특정 사용자·그룹에게 추가적인 개별 권한 부여

ACL 특징

✔️ 기존 권한 체계를 건들이지 않습니다. (대체가 아닌 예외 추가)
✔️ 기존 권한 체계로는 해결되지 않거나 관리가 복잡할 때 유용합니다.
✔️ 하위에 파일이 많은 구조라면 시간이 소요됩니다.


ACL 설정

설정 1) 폴더 권한 설정

setfacl -m u:$username:rwx $폴더

-m (modify): ACL 설정을 추가하거나 수정합니다.
u (user): 대상이 사용자임을 명시합니다.
g (group): 그룹 지정 시 사용합니다.

설정 2) 하위까지 모두 설정

setfacl -R -m u:$username:rwx $폴더

-R (recursive): 하위 경로까지 재귀적으로 모두 적용합니다.

설정 3-1) 새로 생성되는 데이터까지 모두 설정

setfacl -R -m d:u:$username:rwx $폴더

d: (default): 새로 생성되는 하위 개체들이 상속받을 기본(Default) ACL을 지정합니다.


설정 3-2) 백그라운드 실행

하위 데이터가 너무 많은 경우 명령어 실행 도중 터미널의 TMOUT에 따라 세션이 만료되거나, 화면보호기 시간이 다 되어 원격 접근이 끊길 수 있습니다. 콘솔 접근이 아니라면 백그라운드 실행으로 해두는 편이 안전합니다.

nohup setfacl -R -m u:$username:rwx -m d:u:$username:rwx $폴더 > setfacl_result.log 2>&1 &

nohup: 터미널 세션이 끊기거나 로그아웃 되더라도 프로세스가 종료되지 않고 계속 실행되도록 합니다.
&: 명령어를 백그라운드에서 실행하여 터미널 제어권을 즉시 반환받습니다.
> setfacl_result.log 2>&1: 명령어의 정상 출력(표준 출력)과 오류 메시지(표준 에러)를 모두 파일에 저장합니다. 백그라운드 실행 시 진행 상황이나 에러 발생 여부를 나중에 로그로 확인하기 위해 필요합니다.

# 실행 중인 setfacl 프로세스 확인
ps -ef | grep setfacl

# 로그를 통해 실시간 진행 상황 및 에러 확인
tail -f setfacl_result.log

설정 3-3)

하위 적용과 앞으로 존재하는 것에 상속되는 적용은 옵션과 역할이 다릅니다. 따라서 두 번 입력하거나 한 번에 -m을 두 번 입력하는 것이 좋습니다.

-m u:      → 현재 존재하는 것에 적용
-m d:u:    → 앞으로 생성되는 것에 상속

확인 명령어

getfacl $폴더 (| head $NUM)

ACL이 정상적으로 적용된 폴더나 파일은 ls -l 명령어로 확인 시 기존 권한 표기 마지막에 + 기호가 붙습니다. (예: drwxrwxr-x+)

ls -al $폴더

프롬프트 재접근

ACL 설정 전에 로그인이 되어 있던 세션의 경우는 로그아웃 후 재로그인해야 적용됩니다.


ACL 적용 목록 출력

ACL이 적용된(+) 파일 및 폴더만 출력

굉장히 많은 목록이 터미널을 점유하기 때문에 출력을 로그에 넣어두고 파일로 열어보는 편이 좋습니다.

getfacl -R --skip-base $폴더 (> getfacl.log)

-s (--skip-base): 기본 권한(소유자, 그룹, 기타)만 있는 파일은 건너뛰고, setfacl로 예외 권한이 추가된 파일이나 폴더만 걸러서 출력할 수 있습니다.
-R (recursive): 하위 경로까지 재귀적으로 모두 검색합니다.

🍀 1~2줄만 출력해보고 필요한 데이터만 awk로 추출해서 확인하는 방법을 권장합니다.


추출 1) grep으로 경로와 추가 권한만 직관적으로 필터링

경로명과 추가된 사용자(user:) 및 그룹(group:) 정보만 남깁니다.

getfacl -R --skip-base $폴더 | grep -E "^# file:|^user:|^group:" (> $logfile)

추출 2) awk를 활용한 리스트 형태 출력 (CSV 등의 표 활용 가능)

계정, 폴더명, 권한을 한 줄로 나열하여 엑셀이나 문서에 정리하기 좋게 뽑아내는 원라이너(One-liner) 명령어입니다.

getfacl -R --skip-base $폴더 | awk -F: '
/^# file:/ { filepath = substr($0, 9) }
/^user:/ && $2 != "" { print "[폴더/파일] " filepath " | [계정] " $2 " | [권한] " $3 }
/^group:/ && $2 != "" { print "[폴더/파일] " filepath " | [그룹] " $2 " | [권한] " $3 }
'

추출 3) 정규식으로 + 기호가 붙은 권한 폴더만 출력

하위 탐색 없이 현재 폴더의 ls -al 결과에서 +가 붙은 줄만 눈으로 빠르게 확인하고 싶다면 정규식을 사용해 걸러낼 수 있습니다. 가장 쉽고 빠르게 확인한다는 장점이 있지만, 단순히 +가 붙은 줄만 보이는, 간단한 데이터만 확인할 수 있다는 단점이 있습니다.

ls -al $폴더 | grep -E '^.{10}\+'


profile
Raiju Hantu Goryo Obake

0개의 댓글