어떤 상황에서 sudo의 "--preserve-groups" 옵션의 효과를 볼 수 있습니까?

어떤 상황에서 sudo의 "--preserve-groups" 옵션의 효과를 볼 수 있습니까?

다음 사용자가 있다고 가정합니다.

$ whoami
admin
$ groups
staff everyone admin groupA

그리고

$ whoami
user
$ groups
staff everyone groupB

--preserve-groups이 옵션이 정확히 어떤 역할을 하는지 이해하려고 노력 중입니다 .

$ whoami
admin

$ sudo --preserve-groups -u user groups
staff everyone groupB

$ sudo --preserve-groups -u user -s groups
staff everyone groupB

$ sudo --preserve-groups -u user -i groups
staff everyone groupB

옵션 문서를 읽는 방식에 따르면, 실행된 명령에서 보고 싶은 그룹 목록은 대상 사용자가 아닌 호출 사용자로부터 얻어집니다. 그러나 그것은 사실이 아닌 것 같습니다.

답변1

분명히 그렇죠하다groups예상대로 작동 하지만 CPython이 sudo 작동 방식을 이해하지 못하는 방식으로 그룹을 검색하고 있다는 것뿐입니다 .

CPython(3.8.9)은 다음에 관계없이 대상 사용자 그룹을 반환합니다 --preserve-groups.

python3 -c "import os; print(os.getgroups())"

그러나 다음 Swift 프로그램은 예상대로 작동합니다.

import Darwin

let count = Int(getgroups(0, nil))
var groups = [gid_t](repeating: 0, count: count)
getgroups(Int32(count), &groups)
print(groups.map({"\($0)"}).joined(separator: ", "))

관련 정보