私の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
呼び出して確認してください。id
削除する「1000 65534 65534 65534 65534 65534 65534 65534 65534 65534」のリストが返されます。
ユーザーとして、親名前空間(1000)の有効なグループ以外のグループをマップすることはできません。ただし、ここでは追加のグループの1つを使用して高い権限で実行可能ファイルを/usr/bin/dumpcap
実行する必要があります。
$ 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
もちろんそうでなければ簡単になります。 ;-)