uid_mapファイルとgid_mapファイルに書き込んで、ユーザーとグループIDを新しい名前空間にマップしたいと思います。
まもなくターミナル1私は仕事をします。
vaibhav@vaibhav:~$ unshare -U /bin/sh
$ id
uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
$ echo $$
2506
次に、新しい端末を開きます。NO2。はい
vaibhav@vaibhav:~$ echo '0 1000 1' > /proc/2506/
uid_map
vaibhav@vaibhav:~$ echo '0 1000 1' > /proc/2506/
gid_map
-bash: echo: write error: Operation not permitted
今確認してみるとターミナル1
$ id
uid=0(root) gid=65534(nogroup) groups=65534(nogroup)
私はuid_mapファイルとgid_mapファイルを一度だけ書くことができることを知っていますが、最初の書き込みでは失敗します。
gid_mapへの書き込みが失敗する理由を知りたいです。私はそれを使用していますLinux Mint 20.3
答え1
Linux 3.19以降、権限のないユーザーがユーザーグループをマップしようとしたときに特定の制限が追加されました。つまり、セカンダリグループを変更する権限を放棄する必要があります。これは通常、ユーザー削除するsomeuser:denygroup
これは、modeなどの所有権を持つファイルの拒否フィルタとして機能するグループに由来しますu=rw,g=,o=r
。
そのような制限がないと、ユーザーは直接電話できます。setgroups(2)
セカンダリグループのリストを消去します。
この内容は次のように記録されます。user_namespaces(7)
:
「拒絶」と書いてください
/proc/[pid]/setgroups
古いファイルへの書き込みはユーザーの名前空間で/proc/[pid]/gid_map
永久に無効になります。setgroups(2)
/proc/[pid]/gid_map
親ユーザーの名前空間でCAP_SETGID機能なしで書き込みを許可する。
OPの状況は次のとおりです。
echo deny > /proc/2506/setgroups
サプリメントグループのコントロールを放棄し、完了を許可します。
echo '0 1000 1' > /proc/2506/gid_map
メモ:
ユーザーは自分のuid / gidを他のユーザーにのみマッピングでき、興味深い値は自分または根。より多くの可能性のために、setuid-rootヘルパーを使用することができます
newuidmap
そしてnewgidmap
各ユーザーが割り当てた範囲を使用します。/etc/subuid
そして/etc/subgid
。これは、権限のあるヘルパーを使用して、ユーザー権限のないコンテナが実際に機能する方法の一部です。セキュリティに関する注意事項に進む前に特権コマンドを
newgidmap
作成したallow
場合は、/proc/[pid]/setgroups
そのコマンドを有効にしてエスケープできます。拒否グループとにかく、「刑務所」。このコマンドは、ユーザーが権限のないコンテナーを実行できる環境でどこでも使用されます。