どのような状況でsudoの "--preserve-groups"オプションの効果を見ることができますか?

どのような状況でsudoの

次のユーザーがいるとします。

$ 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: ", "))

おすすめ記事