ユーザーごとのresolv.confを設定する方法

ユーザーごとのresolv.confを設定する方法

ユーザーごとに指定する方法はありますかresolv.conf?

私が見つけたのは、ユーザーごとにホスト ファイルを持つ可能性についての漠然とした言及ですが、私はそれに興味はありません。実際には、resolv.conf異なるネーム サーバーを設定したいので、完全な に興味があります。

なぜテストなのかと問うなら登録システムの他のユーザーに影響を与えたくないマルチユーザー環境のネームサーバー。

nsswitch システムを悪用する可能性はあるでしょうか?

答え1

ローカルファイルシステムの名前空間は便利ですが、設定するにはルート権限が必要です。

sudo unshare --mount bash -s <<'EOF'
  mount --bind /path/to/your/resolv.conf /etc/resolv.conf
  sudo -u username-to-run-as command-to-run-with-alternate-resolv-conf 
EOF

更新された resolv.conf で任意のコマンドを実行するスクリプトが必要な場合は、以下を検討してください。

#!/bin/bash
## usage: with-custom-resolver /path/to/resolv.conf cmd arg1 arg2 ...
## ...note that this requires root.

script=""
add_cmd() {
  local cmd_str
  printf -v cmd_str '%q ' "$@"
  script+="$cmd_str"$'\n'
}

resolv_conf=$1; shift

[[ $EUID = 0 ]] || { echo "Must be run as root" >&2; exit 1; }
[[ -e $resolv_conf ]] || { echo "No file found at: $resolv_conf" >&2; exit 1; }

add_cmd mount --bind "$resolv_conf" /etc/resolv.conf
add_cmd exec "$@"
unshare --mount sh -e -c "$script"

したがって、これは次のように使用できます。

with-custom-resolver your-resolv.conf sudo -u someuser some-command arg1

答え2

答えは簡単です -- いいえ....

ただし、ユーザーごとに異なる仮想マシンをセットアップすれば、希望どおりに実行できる可能性があります。

しかし、少し無意味に思えます。

答え3

hostDNS サーバーをテストするには、リゾルバーの設定を変更する必要はありません。 、nslookupまたはコマンドで DNS サーバーを変更するだけですdig

host www.google.com 8.8.8.8

chroot 環境または Linux コンテナー (LXC) を使用して、別の resolv.conf ファイルを作成することもできます。

答え4

これを解決できるかもしれないNSSにサービスを追加する

関連情報