Existe uma maneira de especificar um por usuário resolv.conf
?
O que encontrei são referências vagas à possibilidade de ter um arquivo host por usuário, mas não estou interessado nisso, na verdade estou interessado em um full resolv.conf
, porque quero definir diferentes servidores de nomes.
Se você está perguntando por que o ponto está testandocjdnsservidor(es) de nomes em um ambiente multiusuário no qual não quero afetar outros usuários do sistema.
Seria possível abusar do sistema nsswitch?
Responder1
Os namespaces do sistema de arquivos local são seus amigos, embora exijam permissões de root para serem configurados.
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
Se você deseja um script que execute um comando arbitrário com seu resolv.conf atualizado, 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"
Assim, isso poderia ser usado como:
with-custom-resolver your-resolv.conf sudo -u someuser some-command arg1
Responder2
Resposta simples - NÃO....
No entanto, se você configurar uma máquina virtual diferente para cada usuário, poderá ter a chance de fazer o que deseja.
Parece um pouco inútil, no entanto.
Responder3
Para testar um servidor DNS, não é necessário alterar a configuração do resolvedor. Você só precisa alterar o servidor DNS no host
comando nslookup
ou dig
.
host www.google.com 8.8.8.8
Você também pode usar um ambiente chroot ou Linux Containers (LXC) para ter um arquivo resolv.conf diferente.
Responder4
Talvez eu consiga resolver issoadicionando um serviço ao NSS.