디렉터리에 기본 ACL을 적용하면 다음 두 가지 일만 발생합니다 default:mask
.mask
장면 1
-bash-4.2$ ls -ld test/
drwxr-x---. 2 test test 4096 Oct 15 19:12 test/
-bash-4.2$ setfacl -d -m u:arif:rwx test/
-bash-4.2$ getfacl --omit-header test
user::rwx
group::r-x
other::---
default:user::rwx
default:user:arif:rwx
default:group::r-x
default:mask::rwx
default:other::---
장면 2
-bash-4.2$ ls -dl dir/
drwxr-x---. 2 test test 4096 Oct 15 18:17 dir/
-bash-4.2$ getfacl dir
# file: dir
# owner: test
# group: test
user::rwx
group::r-x
other::---
-bash-4.2$ setfacl -m user:arif:rwx dir
-bash-4.2$ getfacl --omit-header dir
user::rwx
user:arif:rwx
group::r-x
mask::rwx
other::---
그렇다면 여기서 목적은 무엇입니까 mask
?
답변1
무엇
이 3자리 ACL 시스템은 TRUSIX에서 파생되었습니다. 다른 ACL 시스템(예: FreeBSD, MacOS, AIX, Illumos 및 Solaris의 NFS4 스타일 시스템)은 다르게 작동하며 이 ACL 개념은마스크액세스 제어 항목이 없습니다.
이것마스크이름에서 알 수 있듯이 응용 프로그램입니다.마스킹액세스 제어 항목은 사용자 및 그룹에 권한을 부여합니다. 파일 소유자 또는 "기타" 항목이 아닌 모든 액세스 제어 항목에서 부여할 수 있는 최대 권한입니다. 해당 3비트는 and
이러한 다른 항목의 3비트와 일치합니다.
예를 들어 사용자에게 rw-
액세스 제어 항목이 부여되었지만 마스크가 인 경우 r--
해당 사용자는 실제로 r--
액세스 권한만 가집니다. 반대로 사용자에게 --x
액세스 제어 항목만 부여된 경우 마스크는 rwx
추가 권한을 부여하지 않으며 사용자에게는 --x
액세스 권한만 부여됩니다.
이것기본 마스크상위 디렉터리에는 생성된 콘텐츠에 적용되는 마스크 설정이 있습니다. 이것은 상속의 한 형태입니다.
왜
안타깝게도 IEEE 1003.1e는 표준이 되지 못했고 1998년에 철회되었습니다. 실제로 19년이 지난 지금은 널리 보급된 운영체제이다.리눅스통과하다FreeBSD도착하다솔라리스(후자의 경우 NFS4 스타일 ACL과 함께) - 실제 구현입니다.
IEEE 1003.1e 작업 초안 #17흥미롭게 읽었고 추천합니다. 부록 B § 23.3에서 작업 그룹은 레거시 그룹 권한 플래그와 관련하여 POSIX ACL이 작동하는 다소 복잡한 방식에 대한 8페이지의 자세한 근거를 제공합니다 S_IRWXG
. (TRUSIX 사람들이 10년 전에 거의 동일한 분석을 제공했다는 점은 주목할 가치가 있습니다.) 이는 마스크의 존재 이유를 다루며 여기서는 간략하게만 다루겠습니다.
- 전통적인 Unix 애플리케이션은 파일, 명명된 파이프, 장치 또는 디렉터리에 대한 모든 액세스를 거부할 수 있기를 원합니다
chmod(…,000)
. ACL이 있으면 이 기능은 꺼집니다.모두사용자 및 그룹 권한(마스크되어 있고 이전 항목S_IRWXG
이 매핑된 경우) 이것이 없으면 이전 파일 권한을 설정해도000
비소유자user
나group
항목에 영향을 주지 않으며 놀랍게도 다른 사용자가 여전히 해당 개체에 액세스할 수 있습니다.파일의 권한 비트를 액세스 금지로 일시적으로 변경한
chmod 000
다음 다시 다시 변경하는 것은 Unix가 권고 잠금 메커니즘을 갖기 전에 사용된 오래된 파일 잠금 메커니즘입니다.- 보시다시피 - 21세기에도 사람들은 여전히 사용하고 있습니다.. (setlock
1990년대 후반부터 권고 잠금은 이식 가능하고 잘 알려진 도구를 사용하는 스크립트를 통해 쉽게 사용할 수 있게 되었습니다.) - 기존 Unix 스크립트는 실행될 것으로 예상되며
chmod go-rwx
궁극적으로 개체 소유자만 개체에 액세스할 수 있습니다. 다시 말하지만, 마스크가 있고 이전 권한이 이에 매핑되지 않으면S_IRWXG
아무런 효과가 없습니다 . 그렇지 않으면 명령이 비소유자 또는 액세스 제어 항목을chmod
닫지 않아 소유자 외부의 사용자와 비소유 그룹이 액세스 권한을 유지하게 되기 때문입니다. 특정 콘텐츠 액세스 권한user
group
기대네요접근하기 쉬운오직소유자에게.그럼 다시- 보시다시피 - 이
chmod
명령은 여전히 받아들여지는 지혜입니다.12년 후. 이 진실은 아직도 유효합니다. - 마스킹 메커니즘이 없는 다른 방법에도 단점이 있습니다.
- 대부분의 경우 권한 비트는
and
ACL과 별도로 사용되며 대체 시스템에서는 파일 권한 플래그가 필요합니다.rwxrwxrwx
. - 다른 시스템의 권한 비트를 ACL과 별도로 사용하고
or
ACL과 함께 사용하는 경우chmod(…,000)
앞서 언급한 문제가 발생할 수 있습니다.
따라서 ACL 시스템에는 마스크가 함께 제공됩니다.
추가 읽기
- 크레이그 루빈(1989-08-18). Unix 시스템용 액세스 제어 목록 기능 선택의 이론적 근거. NCSC-TG-020-A. 다이앤 출판. ISBN 9780788105548.
- IEEE 컴퓨터 협회 휴대용 애플리케이션 표준 위원회(1997년 10월). 정보 기술 표준 초안 - POSIX(휴대용 운영 체제 인터페이스) - 1부: 시스템 애플리케이션 프로그래밍 인터페이스(API) - 수정안 #: 보호, 감사 및 제어 인터페이스 [C 언어] IEEE 1003.1e. 초안 17.
- 윈프리트 트럼퍼(1999-02-28). Posix.1e에 대한 요약
- https://unix.stackexchange.com/a/406545/5132
- https://unix.stackexchange.com/a/235284/5132
- POSIX ACL을 적용할 때 그룹에 권한을 부여하는 방법은 무엇입니까?
- Bash의 파일에서 원자 쓰기 작업 수행