¿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 host
o .nslookup
dig
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.