
파일에 두 그룹에 대한 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라는 파일이 있는 경우 다음과 같습니다 .0600
acl-test
read 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를 제외한 모든 것을 포함하므로 소유한 사용자와 다른 사용자는 마스크의 영향을 받지 않습니다. 정의된 규칙이 있는 모든 그룹 및 비소유 사용자예잘난 체하는.