먼저 파일을 생성하고 표준 권한과 ACL 항목을 확인합니다.
$ touch file; ls -l file; getfacl file
-rw-r--r-- 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
other::r--
그런 다음 파일에 ACL 마스크를 설정하고 표준 권한 및 ACL 항목을 다시 확인했습니다.
$ setfacl -m mask:rwx file
$ ls -l file; getfacl file
-rw-rwxr--+ 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
mask::rwx
other::r--
파일에 대한 ACL 마스크 표준 그룹 권한도 변경되었습니다.
- ACL 마스크와 표준 그룹 권한은 어떤 연관이 있나요?
- ACL 마스크와 파일 그룹 권한을 결합하는 이유는 무엇입니까? 그 뒤에있는 논리는 무엇입니까?
문제의 배포판은 Debian Linux 7.6 및 CentOS 7입니다.
편집하다
이 시점에서는 표준 파일 그룹 권한과 ACL 마스크 간의 관계를 조사하면서 찾은 결과 중 일부를 공유하고 싶습니다. 내가 찾은 경험적 관찰은 다음과 같습니다.
ACL 마스크는 다음과 같이 변경할 수 있습니다.
- 명령으로 직접 설정하십시오
setfacl -m m:<perms>
. - 명령을 사용하여 파일 그룹 권한을 변경합니다
chmod
(ACL 마스크가 이미 존재하는 경우, 파일에 명명된 사용자 또는 그룹 ACL 권한이 없는 경우 선택 사항이므로 존재하지 않을 수도 있음). - 지정된 사용자 또는 그룹 ACL 항목을 추가합니다(마스크가 자동으로 다시 계산됩니다).
- 명령으로 직접 설정하십시오
마스크는 마스크가 setfacl에 의해 직접 설정되거나 chmod를 통해 파일 그룹 권한을 수정하는 경우(자동으로 계산되지 않음)에만 최대 액세스를 적용합니다(ACL 마스크 권한 이상의 권한을 가진 ACL 항목이 있는 경우). ACL 항목을 변경하면 ACL 마스크의 자동 재계산이 트리거되고 "적용 모드"가 효과적으로 꺼집니다.
ACL을 사용할 때 표준 파일 그룹 권한에 암시적으로 영향을 미치는 몇 가지 부작용이 있습니다.
- 파일에 적용된 지정된 사용자 또는 그룹 ACL 항목은 ACL 마스크를 변경(권한 증가)하여 유효 파일 그룹 권한을 변경할 수 있습니다. 예를 들어, 파일 소유자로서 "rw-r--r-- jim Students" 권한을 설정하고 사용자 "jack"에게 rw 권한도 부여하는 경우 암시적으로 " 학생' 그룹입니다.
- 더 제한적인(권한이 적은) ACL 마스크는 해당 표준 파일 그룹 권한을 영구적으로 제거할 수 있습니다. 예를 들어, rw 표준 파일 그룹 권한이 있는 파일이 있고 해당 파일에 읽기 전용 ACL 마스크를 적용하면 파일에 대한 그룹 권한이 읽기 전용으로 축소됩니다. 그런 다음 명령을 사용하여 모든 확장 ACL 항목을 삭제하면
setfacl -b
그룹 권한은 읽기 전용으로 유지됩니다. 이는 더 엄격한 ACL 마스크에만 적용되며, 더 부드러운 ACL 마스크(더 많은 권한)는 제거 후 원래 파일 그룹 권한을 영구적으로 변경하지 않습니다.
답변1
unix 파일 권한이 acl 항목과 일치하지 않거나 그 반대의 경우에는 의미가 없습니다. 따라서 매뉴얼 페이지( acl(5)
)에는 요구 사항이 명시되어 있습니다.
ACL 항목과 파일 권한 비트 간의 대응
ACL에 의해 정의된 권한은 파일 권한 비트에 의해 지정된 권한의 상위 집합입니다.
파일 소유자, 그룹 및 기타 권한과 특정 ACL 항목 간에는 대응 관계가 있습니다. 소유자 권한은 ACL_USER_OBJ 항목의 권한에 해당합니다. ACL에 ACL_MASK 항목이 있는 경우 그룹 권한은 ACL_MASK 항목의 권한에 해당합니다. 그렇지 않고 ACL에 ACL_MASK 항목이 없으면 그룹 권한은 ACL_GROUP_OBJ 항목의 권한에 해당합니다. 다른 권한은 ACL_OTHER_OBJ 항목의 권한에 해당합니다.
파일 소유자, 그룹 및 기타 권한은 항상 해당 ACL 항목의 권한과 일치합니다. 파일 권한 비트를 수정하면 관련 ACL 항목이 수정되고, 이러한 ACL 항목을 수정하면 파일 권한 비트가 수정됩니다.
토론에 대한 응답으로 부록:
ACL 마스크와 파일 그룹 권한을 결합하는 이유는 무엇입니까? 그 뒤에있는 논리는 무엇입니까?
좋은 설명은여기. 기본적으로 마스크팩은
[...] 그룹 클래스의 모든 항목에 의해 부여되는 권한의 상한입니다.
이 cap 속성은 ACL이 지원되면 ACL을 인식하지 못하는 POSIX.1 애플리케이션이 갑자기 예기치 않게 추가 권한 부여를 시작하지 않도록 보장합니다.
최소 ACL에서 그룹 클래스 권한은 자신이 속한 그룹 권한과 동일합니다. 확장 ACL에서 그룹 클래스에는 다른 사용자나 그룹에 대한 항목이 포함될 수 있습니다. 이로 인해 문제가 발생합니다. 이러한 추가 항목 중 일부에는 소유 그룹 항목에 포함되지 않은 권한이 포함될 수 있으므로 소유 그룹 항목 권한이 그룹 클래스 권한과 동일하지 않을 수 있습니다.
이 문제는 항목을 마스킹하여 해결되었습니다. 최소 ACL을 사용하여 그룹 클래스 권한은 자신이 속한 그룹 항목 권한에 매핑됩니다. 확장 ACL을 사용하면 그룹 클래스 권한이 마스크 항목 권한에 매핑되는 반면 그룹 항목은 여전히 그룹 권한을 정의합니다. 그룹 클래스 권한 매핑은 더 이상 일정하지 않습니다.
답변2
이 링크를 보고 마침내 무슨 일이 일어나고 있는지 이해했습니다.ACL 처리
특히 이 마스크는 기본적으로 NAMED USER 및 모든 GROUP 권한을 대체하고 작동합니다. 이는 다음과 같은 경우를 의미합니다.
- 마스크 조정, 그룹 최대 권한 변경,
- 마스크가 존재하는 그룹 권한을 변경하면 마스크는 모든 그룹 권한 중 최대 그룹 권한을 갖습니다.
- 그룹 읽기, 쓰기 및 실행 권한은 마스크(있는 경우)에 따라 결정됩니다.
도움이 되었기를 바랍니다.