파일에 대한 ACL 마스크와 표준 그룹 권한은 어떤 관계입니까?


17

처음에는 파일을 만들고 표준 권한 및 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 마스크 (추가 권한)는 원래 파일 그룹 권한이 제거 된 후에 영구적으로 변경하지 않습니다.

답변:


11

유닉스 파일 사용 권한이 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을 사용하면 그룹 클래스 권한이 마스크 항목 권한에 맵핑되는 반면 소유 그룹 항목은 여전히 ​​소유 그룹 권한을 정의합니다. 그룹 클래스 권한의 매핑이 더 이상 일정하지 않습니다.


당신이 말하는 것은 다음 getfacl 출력에 적용됩니다 : user :: rw- group :: r-- other :: r-- . chmod명령을 사용 하여 표준 권한을 변경 getfacl -m u:someuser:rwx하면 파일 소유자의 표준 파일 권한이 변경되고 변경 사항이 ls -l출력에 반영됩니다 . 그건 사실이지만, 그것이 내 질문에 어떻게 대답하는지
golem

전체 내용에 대한 내 편집 내용 참조
카운터 모드

1
편집 된 답변에 따르면 파일 그룹 권한과 ACL 마스크가 의도적으로 결합되어 있습니다. ACL 마스크와 파일 그룹 권한을 결합하는 이유는 무엇입니까? 어떤 논리가 그 뒤에 놓여 있는지는 분명하지 않습니다.
golem

1
의미가있을 수 있습니다. 정의 및 구현에 따라 다릅니다. 정의에 따르면 Linux 파일 ACL은 현재 구현되는 표준 파일 권한의 상위 집합입니다. 그래서 그들은 "모순"할 수 없습니다. 유스 케이스입니다. 초기 -rw-r--r-- 1 user user권한이 있는 파일의 "testuser"에 rwx 권한을 할당하면 해당 이름의 사용자 ACL이 승인되고 ACL 마스크 (파일 그룹 권한과 함께)도 rwx로 변경됩니다. --- [다음 주석을 계속해서보십시오]
golem

1
"testuser"의 rwx 권한이 파일의 새로운 -rw-rwxr-- 1 user user권한과 상충 됩니까? 모순을 어떻게 결정합니까? 테스트 사용자의 ACL 권한을 표준 파일 그룹 권한과 비교하여? 그룹 권한을 사용자 권한과 비교 한 논리는 무엇입니까? 그들은 다른 실체가 아닌가? 직관적이지 않습니까? 아마 당신에게는 분명하지만 여전히 이해하기 위해 고심하고 있습니다.
golem

3

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

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

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

여기에 이미지 설명을 입력하십시오

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


참조한 페이지에 마스크 에 대한 아주 좋은 설명이 있습니다 (섹션 27.3.3. 액세스 ACL이있는 디렉토리 에서 인용 ) : 마스크는 그룹 클래스의 모든 항목에 대한 최대 유효 액세스 권한을 정의합니다. 여기에는 명명 된 사용자, 명명 된 그룹 및 소유 그룹이 포함됩니다. .
patryk.beza

-1

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.