Cómo configurar un resolv.conf por usuario

Cómo configurar un resolv.conf por usuario

¿Hay alguna manera de especificar un usuario por usuario resolv.conf?

Lo que encontré son referencias vagas a la posibilidad de tener un archivo host por usuario, pero eso no me interesa, en realidad estoy interesado en un archivo resolv.conf, porque quiero configurar diferentes servidores de nombres.

Si preguntas por qué el punto es probarcjdnsservidores de nombres en un entorno multiusuario en el que no quiero afectar a otros usuarios del sistema.

¿Sería posible quizás abusar del sistema nsswitch?

Respuesta1

Los espacios de nombres del sistema de archivos local son tus amigos, aunque requieren permisos de root para configurarse.

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

Si desea un script que ejecute un comando arbitrario con su resolv.conf actualizado, considere:

#!/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"

Por lo tanto, esto podría usarse como:

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

Respuesta2

Respuesta sencilla: NO....

Sin embargo, si configurara una máquina virtual diferente para cada usuario, podría tener la oportunidad de hacer lo que quiera.

Sin embargo, parece un poco inútil.

Respuesta3

Para probar un servidor DNS, no es necesario cambiar la configuración del solucionador. Solo necesita cambiar el servidor DNS en el comando hosto .nslookupdig

host www.google.com 8.8.8.8

También puede utilizar un entorno chroot o contenedores Linux (LXC) para tener un archivo resolv.conf diferente.

Respuesta4

Tal vez pueda resolver estoagregar un servicio a NSS.

información relacionada