![어떤 상황에서 sudo의 "--preserve-groups" 옵션의 효과를 볼 수 있습니까?](https://linux55.com/image/204688/%EC%96%B4%EB%96%A4%20%EC%83%81%ED%99%A9%EC%97%90%EC%84%9C%20sudo%EC%9D%98%20%22--preserve-groups%22%20%EC%98%B5%EC%85%98%EC%9D%98%20%ED%9A%A8%EA%B3%BC%EB%A5%BC%20%EB%B3%BC%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
다음 사용자가 있다고 가정합니다.
$ 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: ", "))