GNU/Linux >> Linux の 問題 >  >> Linux

非特権ユーザーとして「unshare-n[プログラム]」を実行することは可能ですか?

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

unshare -n ping 127.0.0.1

非特権ユーザーとして、Operation not permittedを返します 、特権ユーザーとして、目的のNetwork is unreachableを返します 。

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

承認された回答:

util-linuxの新しいバージョンでは、unshare --map-root-userを取得しました オプション。 unshare(1)からの引用 バージョン2.26.2:

-r、–map-root-user

プログラムは、現在有効なユーザーIDとグループ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 別の回答で簡単に説明されているように、考慮される場合があります。


Linux
  1. rootユーザーとしてjenkinsでシェルコマンドを実行しますか?

  2. Ubuntu で Appium iOS 自動テストを実行することはできますか?

  3. 別のユーザーとして bash スクリプトの一部を実行する

  1. 起動時に自動的にセロリを実行することは可能ですか?

  2. Android - (通常の) Linux で Android アプリケーションを実行できますか?

  3. root として rsync を実行しますが、ユーザーの所有権は保持します

  1. Podmanでsudoを使用せずにLinuxでコンテナを実行する

  2. ユーザーとして引数を使用してスクリプトを実行しますか?

  3. Nexus 7でUbuntuを実行することは可能ですか?