파일에 대한 ACL 마스크와 표준 그룹 권한은 어떤 관계입니까? 공유하고 싶었습니다. 내가

처음에는 파일을 만들고 표준 권한 및 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 마스크 표준 그룹 권한과 함께 변경되었습니다.

  1. ACL 마스크와 표준 그룹 권한 사이에는 어떤 연결이 있습니까?
  2. ACL 마스크와 파일 그룹 권한을 결합한 이유는 무엇입니까? 그 뒤에 어떤 논리가 놓여 있습니까?

해당 배포판은 Debian Linux 7.6 및 CentOS 7입니다.


편집하다

이 시점에서 나는 표준 파일 그룹 권한과 ACL 마스크 사이의 관계를 조사하면서 내가 찾은 몇 가지 발견을 공유하고 싶었습니다. 내가 찾은 경험적 관찰은 다음과 같습니다.

  1. ACL 마스크는 다음과 같이 변경할 수 있습니다.

    1. setfacl -m m:<perms>명령 으로 직접 설정하여 ;
    2. chmod명령을 사용하여 파일 그룹 권한을 변경하여 (ACL 마스크가 이미있는 경우, 파일에 대해 명명 된 사용자 또는 그룹 ACL 권한이없는 경우 선택 사항이므로 존재하지 않을 수 있음);
    3. 명명 된 사용자 또는 그룹 ACL 항목을 추가하여 (마스크가 자동으로 다시 계산 됨)
  2. 마스크는 setfacl 또는 chmod (자동 계산되지 않음)를 사용하여 파일 그룹 권한을 수정하여 마스크를 직접 설정 한 경우에만 최대 액세스 권한 (ACL 마스크 권한을 초과하는 ACL 항목이있는 경우)을 적용합니다. ACL 항목을 변경하면 ACL 마스크 자동 재 계산이 트리거되고 “강제 모드”가 효과적으로 꺼집니다.

  3. ACL을 사용할 때 표준 파일 그룹 권한에 암시 적으로 영향을 미치는 몇 가지 부작용이 있습니다.

    1. 파일에 적용된 명명 된 사용자 또는 그룹 ACL 항목은 ACL 마스크를 변경하여 (권한을 증가시킵니다) 따라서 효과적인 파일 그룹 권한을 가질 수 있습니다. 예를 들어, 파일 소유자로서 “rw-r–r– jim 학생”권한이 설정되어 있고 사용자 “jack”에게 rw 권한을 부여하면 모든 사람에게 rw 권한도 내재적으로 부여합니다. “학생”그룹에서.
    2. 엄격한 (권한이없는) ACL 마스크는 해당 표준 파일 그룹 권한을 영구적으로 제거 할 수 있습니다. 예를 들어 rw 표준 파일 그룹 권한이있는 파일이 있고 파일에 읽기 전용 ACL 마스크를 적용하면 그룹 권한이 읽기 전용으로 줄어 듭니다. 그런 다음 모든 확장 ACL 항목을 제거하면 ( setfacl -b명령 포함) 그룹 권한은 읽기 전용으로 유지됩니다. 이는 엄격한 ACL 마스크에만 적용되며, 더 부드러운 ACL 마스크 (추가 권한)는 원래 파일 그룹 권한이 제거 된 후에 영구적으로 변경하지 않습니다.


답변

유닉스 파일 사용 권한이 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 마스크와 파일 그룹 권한을 결합한 이유는 무엇입니까? 그 뒤에 어떤 논리가 놓여 있습니까?

좋은 설명이 여기 있습니다 . 본질적으로 마스크는

[…] 그룹 클래스의 모든 항목이 부여 할 권한의 상한.

이 상한 특성은 ACL을 인식하지 못한 POSIX.1 응용 프로그램이 ACL이 지원되면 갑자기 예기치 않은 추가 권한 부여를 시작하지 않도록합니다.

최소 ACL에서 그룹 클래스 권한은 소유 그룹 권한과 동일합니다. 확장 ACL에서 그룹 클래스에는 추가 사용자 또는 그룹에 대한 항목이 포함될 수 있습니다. 이로 인해 문제가 발생합니다. 이러한 추가 항목 중 일부는 소유 그룹 항목에 포함되지 않은 권한을 포함 할 수 있으므로 소유 그룹 항목 권한이 그룹 클래스 권한과 다를 수 있습니다.

이 문제는 마스크 입력으로 인해 해결됩니다. 최소 ACL을 사용하면 그룹 클래스 권한이 소유 그룹 항목 권한에 맵핑됩니다. 확장 ACL을 사용하면 그룹 클래스 권한이 마스크 항목 권한에 맵핑되는 반면 소유 그룹 항목은 여전히 ​​소유 그룹 권한을 정의합니다. 그룹 클래스 권한의 매핑이 더 이상 일정하지 않습니다.


답변

나는 마지막으로 내가이 링크를봤을 때 정확히 발생하는 것을 이해 ACL을 처리를

특히, 해당 마스크는 기본적으로 NAMED USER 및 모든 GROUP 권한을 대체하고 기능합니다. 이것은 다음과 같은 경우를 의미합니다.

  1. 마스크를 조정하고 그룹 최대 권한을 변경하고
  2. 마스크가있는 상태에서 그룹 권한을 변경하면 마스크는 모든 그룹 권한의 최대 그룹 권한을 갖습니다.
  3. 그룹 읽기, 쓰기 및 실행 권한은 마스크에 따라 결정됩니다 (있는 경우).

잘하면 이것이 도움이됩니다.


답변

그 뒤에 어떤 논리가 놓여 있습니까?

논리가 완전히 중단되었으므로 POSIX ACL은 순수하고 쓸모없는 말이 아닙니다.

표준 프리미티브 UNIX의 “ugo”모델을 제외하고 ACL 개념이없는 앱과의 호환성을 유지하려는 경우 그룹의 권한을 지우는 모든 앱이 ACL에 의해 추가 된 액세스를 효과적으로 철회하기 때문에 처음에는 실제로 실패했습니다.