그룹 권한 연합

그룹 권한 연합

파일에 두 그룹에 대한 ACL 항목이 있는 경우 다음과 같이 서로 다른 권한을 부여하십시오.

group:admin:rw-
group:staff:r--

사용자가 두 그룹 모두에 속해 있는 경우 해당 사용자에게는 어떤 권한이 있습니까? 어떤 항목이 우선적으로 적용되나요? 실험 결과 가장 제한적인 권한이 적용되는 것으로 나타났습니다. 그렇다면 그룹 구성원이 더 높은 권한을 갖기를 원할 때(더 제한된 다른 그룹에 속하더라도) 이 상황을 처리하는 가장 좋은 방법은 무엇입니까?

답변1

~에서기준:

즉, 공개 접근 결정 알고리즘은 다음과 같이 설명되어야 한다(이 설명은 대략적으로정의일반적인 액세스 결정 알고리즘에 대한 자세한 설명은 ACL 관리자의 의사코드에 지정되어 있습니다.

  • 수신 PAC를 ACL의 액세스 ACLE(ACL 관리자의 의사 코드에 정의된 의미)와 일치시킵니다(위에서 아래로 표시된 순서대로, 즉 UO, U, FU, GO/G/FG, O). , FO, AO) 첫 번째 일치에서 중지하고(지정된 그룹과 유사한 ACLE의 경우를 제외하고 모든 일치는 "동시"로 간주됨) 일치하는 ACLE에 권한이 부여되었음을 기록합니다(또는 그룹의 경우 다음과 유사). ACLE, 일치하는 모든 ACLE에 의해 부여된 권한의 통합).

  • 필요에 따라 획득한 권한은 ACL 마스크 ACLE의 권한에 대해 마스크(즉, 교차)됩니다. 즉, 중앙 열 1 에서 일치하는 경우 MASK_OBJ 권한으로 마스크하고/하거나 PAC가 인증되지 않은 경우 UNAUTHENTICATED를 사용합니다. 마스킹 권한). (ACL 관리자가 이러한 두 마스크 ACLE를 지원하지 않는 경우 이 단계는 작동하지 않습니다.)

(원본 강조, 각주 추가)

root즉, 단일 줄을 포함하는 Users, Groups 및 Permissions라는 파일이 있는 경우 다음과 같습니다 .0600acl-testread possible

$ getfacl acl-test
# file acl-test
# owner: root
# group: root
user::rw-
group::---
other::---

이제 내가 (사용자로서 fox) cat다음을 수행하려고 하면:

$ cat acl-test
cat: acl-test: Permission denied

그룹 권한 연합

저는 and 그룹에 속해 있으므로 users해당 wheel그룹에 대한 특정 ACL을 추가할 수 있습니다.

# setfacl -m g:users:--- -m g:wheel:r-- acl-test
$ cat acl-test
read possible

이는 이러한 group항목(함께 고려됨)이 내 그룹 중 하나에 대한 읽기 권한을 허용하기 때문입니다. 다음과 같이 결합할 수 있습니다.

# setfacl -m g:users:-w- acl-test
$ getfacl acl-test
# file: acl-test
# owner: root
# group: root
user::rw-
group::---
group:wheel:r--
group:users:-w-
mask::rw-
other::---
$ printf '%s\n' 'write possible' >> acl-test
$ cat acl-test
read possible
write possible

이제 해당 권한을 허용하는 그룹이 동일한 그룹이 아니더라도 파일을 읽고 쓸 수 있습니다.

사용자별 권한은 모든 그룹에 적용됩니다.

사용자 규칙은 그룹 규칙보다 먼저 적용되므로 특정 사용자가 읽고 쓸 수 있는 내용을 여전히 제한할 수 있습니다.

# setfacl -m u:fox:--- acl-test
$ getfacl acl-test
# file: acl-test
# owner: root
# group: root
user::rw-
user:fox:---
group::---
group:wheel:r--
group:users:-w-
mask::rw-
other::---
$ cat acl-test
cat: acl-test: Permission denied

마스크를 착용하면 거의 모든 것을 덮을 수 있습니다.

파일이 소유자를 제외한 모든 사람에게 실제로 읽기 전용인 경우:

# setfacl -x u:fox -m g::rw- -m m:r-- acl-test
$ getfacl acl-test
# file: acl-test
# owner: root
# group: root
user::rw-
group::rw-          #effective:r--
group:wheel:r--
group:users:-w-     #effective:---
mask::r--
other::---
$ printf '%s\n' 'now writing is impossible' >> acl-test
bash: acl-test: Permission denied
# printf '%s\n' 'owner can still write' >> acl-test

신기하게도 마스크가 안덮혀요다른 사람권한은 다음과 같습니다.

# setfacl -x g:users -x g:wheel -m o:rw- -n acl-test
$ getfacl acl-test
# file: acl-test
# owner: root
# group: root
user::rw-
group::rw-          #effective:r--
mask::r--
other::rw-
$ printf '%s\n' 'others can write now' >> acl-test
# chown :users acl-test
$ printf '%s\n' 'but not members of the owning group' >> acl-test
bash: acl-test: Permission denied

1 "가운데 열"은 다음을 의미합니다.이 사진UO와 O를 제외한 모든 것을 포함하므로 소유한 사용자와 다른 사용자는 마스크의 영향을 받지 않습니다. 정의된 규칙이 있는 모든 그룹 및 비소유 사용자잘난 체하는.

관련 정보