Как настроить resolv.conf для каждого пользователя

Как настроить resolv.conf для каждого пользователя

Есть ли способ указать каждого пользователя отдельно resolv.conf?

Я нашел лишь туманные упоминания о возможности создания файла хоста для каждого пользователя, но меня это не интересует, на самом деле меня интересует полный файл resolv.conf, поскольку я хочу задать разные серверы имен.

Если вы спрашиваете, почему смысл в тестированииcjdnsсервер(ы) имен в многопользовательской среде, в которой я не хочу влиять на других пользователей системы.

Возможно ли злоупотребление системой nsswitch?

решение1

Локальные пространства имен файловой системы — ваши друзья, хотя для их настройки требуются права root.

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

Для проверки DNS-сервера вам не нужно менять конфигурацию резолвера. Вам просто нужно изменить DNS-сервер в команде host, nslookupили dig.

host www.google.com 8.8.8.8

Вы также можете использовать среду chroot или контейнеры Linux (LXC), чтобы иметь другой файл resolv.conf.

решение4

Я мог бы решить эту проблемудобавление сервиса в NSS.

Связанный контент