権限のないユーザーで "unshare -n [program]"を実行できますか?

権限のないユーザーで

インターネットにアクセスせずにプログラムを実行したいです。

unshare -n ping 127.0.0.1

権限のないユーザーとしてを返し、Operation not permitted権限のあるユーザーとして必要なものを返しますNetwork is unreachable

権限のないユーザーにも機能させる方法はありますか?

ベストアンサー1

util-linuxの将来のバージョンでは、unshareこのオプションが得られました--map-root-userunshare(1)バージョン 2.26.2 引用:

-r、--map-root-user

現在有効なユーザーとグループIDが、新しく作成されたユーザー名前空間のスーパーユーザーUIDとGIDにマップされている場合にのみ、このプログラムを実行してください。これにより、権限なしで実行しても、新しく作成されたネームスペースのさまざまな側面(たとえば、ネットワークネームスペースからインターフェースを構成したり、マウントネームスペースにファイルシステムをマウントしたり)を管理するために必要な機能を簡単に取得できます。純粋に便利な機能として、複数のUIDやGID範囲マッピングなどのより複雑なユースケースはサポートされていません。このオプションは --setgroups=deny を意味します。

そのため、最新のシステムでは以下を実行できます。

unshare -n -r ping 127.0.0.1

それから期待されるNetwork is unreachable

Debianシステムではまだエラーが表示される可能性があるため、Operation not permittedまず次のコマンドを実行して、権限のないユーザーネームスペースを有効にする必要があります。

sudo sysctl -w kernel.unprivileged_userns_clone=1

注:より広い範囲のユースケースでは、bwrap --unshare-net簡単に説明したように、より複雑なユースケースを検討できます。他の答えで

おすすめ記事