インターネットにアクセスせずにプログラムを実行したいです。
unshare -n ping 127.0.0.1
。
権限のないユーザーとしてを返し、Operation not permitted
権限のあるユーザーとして必要なものを返しますNetwork is unreachable
。
権限のないユーザーにも機能させる方法はありますか?
ベストアンサー1
util-linuxの将来のバージョンでは、unshare
このオプションが得られました--map-root-user
。unshare(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
簡単に説明したように、より複雑なユースケースを検討できます。他の答えで。