補助グループと共有解除

補助グループと共有解除

私の Linux マシンでは、私 (私のユーザー) にはメイン グループと複数の他のグループがあります (私はグループ 150 に属していることに注意してください)。

$ id -u; id -g; id -G
1000
1000
1000 6 21 91 97 150 190 465 996 1003

コマンドをユーザー名前空間に分離する必要があります。unshare --userそのためには以下を使用します。

$ unshare --user --map-user=4000 --map-group=4000 bash -c 'id -u; id -g; id -G'
4000
4000
4000 65534

(私が所属していたグループはすべて保持されますが、そのほとんどは新しいユーザー名前空間にマップされていないため、オーバーフロー グループ 65534、「nobody」、または「nogroup」に置き換えられることに注意getgroupsしてください。 を呼び出すと、リスト「1000 65534 65534 65534 65534 65534 65534 65534 65534 65534」が返され、 idそのリストが重複排除されます。)

ユーザーとして、親名前空間 (1000) の有効なグループ以外のグループをマップすることはできません。ただし、ここでは、補助グループの 1 つを使用して、昇格された権限で実行可能ファイルを実行する必要があります (/usr/bin/dumpcap実行できるのは、外部名前空間のグループ 150 内のみであることに注意してください)。

$ ls -n /usr/bin/dumpcap
-rwxr-xr-- 1 0 150 116928 Jun  7 21:16 /usr/bin/dumpcap
$ getcap /usr/bin/dumpcap
/usr/bin/dumpcap cap_dac_override,cap_net_admin,cap_net_raw=eip

ユーザー名前空間内のグループを、親名前空間 (ここでは 150) 内の自分が属する補助グループにマップする方法はありますか? — もちろん、CAP_SETGIDそれがなければ、簡単すぎます。 ;-)

関連情報