다음 사용자가 있다고 가정합니다.
$ 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: ", "))