부모 디렉터리의 default ACL은 새 객체의 access ACL 초기값으로 복사되지만, 새 파일을 만드는 프로그램이 요청한 mode에 없는 권한은 결과에서 제한됩니다. 따라서 default ACL 항목에 그룹 rwx가 적혀 있어도 생성 mode가 그룹 쓰기를 허용하지 않으면 새 파일의 유효 쓰기 권한이 사라질 수 있습니다.
기본 ACL이 있는 경로에서는 umask만 보고 결과를 확정하지 말고, 부모 default ACL과 생성 mode, 새 파일 ACL을 함께 비교해야 합니다. 아래 ACL과 mode는 직접 만든 교육 예시이며 공식 기출이나 판매 카드 원문이 아닙니다.
default ACL은 새 파일의 시작 권한을 정합니다
일반 access ACL은 이미 존재하는 파일이나 디렉터리에 누가 접근할 수 있는지 정합니다. 반면 디렉터리의 default ACL은 그 안에서 만들어질 객체의 초기 access ACL에 영향을 줍니다. 즉 default ACL은 ‘이 디렉터리에 들어오는 사용자는 모두 쓸 수 있다’는 선언이 아니라, 자식 객체 생성 시 복사될 권한의 틀입니다. 새 객체를 만드는 호출의 mode도 함께 고려해야 합니다.
그룹 rwx가 파일에서는 r--로 제한되는 사례
default:user::rwx
default:group::r-x
default:group:reviewers:rwx
default:mask::rwx
default:other::---| 항목 | 상속 직후 | 생성 mode 반영 후 |
|---|---|---|
| user:: | rwx | rw- |
| group:: | r-x | r-x, effective:r-- |
| group:reviewers: | rwx | rwx, effective:r-- |
| mask:: | rwx | r-- |
| other:: | --- | --- |
파일 생성 때 부모 default ACL이 새 파일의 access ACL로 상속됩니다. 위 입력에서 부모 mask는 rwx이고 생성 mode 0640의 그룹 자리는 r--이므로 새 mask는 r--로 제한됩니다. named group reviewers의 기록된 항목 rwx가 곧 r--로 바뀐다는 뜻은 아닙니다. 항목은 남아 있어도 mask와 교차한 유효 권한은 r--입니다. getfacl에서는 이 차이를 effective 표시로 확인할 수 있습니다.
부모 mask를 ---로 바꾸면 같은 생성 mode 0640이라도 새 mask는 ---입니다. 생성 mode는 상속된 권한을 넓혀 주지 않기 때문입니다. 따라서 named group 한 줄만 보고 새 mask가 반드시 r--라고 계산할 수는 없습니다. 완전한 부모 ACL과 생성 mode를 함께 제시해야 결과가 정해집니다.
부모에서 자식까지 세 곳을 나란히 확인합니다
- 어느 디렉터리에서 파일이 만들어졌는지 확인하고 그 디렉터리의 default ACL을 읽습니다.
- 문제나 로그에서 생성 호출이 요청한 mode를 찾습니다.
- 새 파일의 owner·group·access ACL과 mask를 읽습니다.
- 요청 mode에 없는 권한이 제거되었는지 계산합니다.
- 사용자의 실제 그룹 소속과 상위 경로 접근 권한도 분리해서 검토합니다.
이 순서는 설정 파일을 바꾸는 순서가 아니라 증거를 읽는 순서입니다. 실무에서는 부모 디렉터리, 생성 애플리케이션, 파일시스템이 서로 다른 관리 주체일 수 있으므로 한 줄의 default ACL만 보고 누구의 실수인지 정하지 마세요. ACL을 지원하는 파일시스템인지, 서비스가 어느 경로와 계정으로 동작하는지도 확인해야 합니다.
umask와 생성 mode를 같은 단계로 혼동하지 않습니다
default ACL이 없는 일반 분기에서는 mode와 umask가 새 ACL을 만드는 조건입니다. 부모에 default ACL이 있는 분기에서는 상속된 ACL과 생성 mode를 함께 사용하며, umask 결과를 무조건 앞뒤에 또 빼는 식으로 계산하지 않습니다. Linux 생성 시스템 호출 설명은 기본 ACL이 있을 때 umask가 무시되는 차이를 명시합니다. 따라서 문제에 default ACL이 주어졌다면 ‘umask 0027이니 그룹 쓰기 제거’만 말하기보다 ACL 상속과 요청 mode를 먼저 표시하세요.
default ACL을 강제 권한이나 실행 권한으로 읽지 않습니다
자주 나오는 오답은 default ACL에 rwx가 있으니 새 파일도 그룹이 반드시 쓸 수 있다고 단정하는 것입니다. default ACL은 생성 프로그램이 요청한 권한보다 넓은 권한을 보장하지 않습니다. 실행 비트 또한 파일에서 프로그램 실행을 의미할 수 있지만, 디렉터리에서는 경로 검색 권한으로 쓰이므로 같은 기호라도 객체 종류에 따라 의미가 다릅니다. 문제에 파일과 디렉터리가 섞이면 mode를 한 표에 뭉치지 마세요.
틀린 문제는 ACL의 세 줄을 가리고 다시 풉니다
복습할 때 부모 default ACL, 생성 mode, 새 파일 getfacl 결과를 각각 가린 뒤 결과를 예측합니다. 먼저 위 부모 mask rwx와 생성 mode 0640으로 유효 권한 r--를 계산하고, 부모 mask만 ---로 바꿔 유효 권한이 없어지는 반례를 풉니다. 다음에는 원래 부모 ACL에서 mode를 0660으로 바꾸어 새 mask rw-를 계산하세요. 그룹 소속으로 접근하는 사용자와 파일 소유자의 접근 경로도 구분해야 합니다.
정답을 가리고 확인해 보세요
이 글을 위해 만든 학습 예시이며 공식 기출문제나 판매 카드의 인용이 아닙니다.
부모 default ACL은 user::rwx, group::r-x, group:reviewers:rwx, mask::rwx, other::---입니다. 생성 mode 0640으로 만든 새 파일에서 reviewers 항목의 그룹 경로 유효 권한은 무엇인가요? 부모 mask가 ---였다면 읽기 권한이 새로 생기나요?
정답과 해설 확인
부모 mask가 rwx이면 새 mask는 r--이고 reviewers의 유효 권한도 r--입니다. 부모 mask가 ---이면 유효 권한은 ---이며 읽기가 추가되지 않습니다.생성 mode는 상속된 ACL을 제한하지만 권한을 추가하지 않습니다. named-group 항목은 rwx로 남아도 새 mask와 교차해 유효 권한을 계산합니다.