在什么情况下我可以看到 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

显然它正如我预期的那样工作,只是groupsCPython 以一种不了解 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: ", "))

相关内容