Como definir um resolv.conf por usuário

1

Existe uma maneira de especificar um usuário resolv.conf ?

O que eu encontrei são vagas referências à possibilidade de ter um arquivo host por usuário, mas eu não estou interessado nisso, estou realmente interessado em um resolv.conf completo, porque eu quero definir diferentes servidores de nomes.

Se você está perguntando por que o ponto está testando cjdns nameserver (s) em um ambiente multiusuário no qual eu não quero para afetar outros usuários do sistema.

Seria possível abusar do sistema nsswitch?

    
por miniBill 22.05.2013 / 22:11

4 respostas

1

Eu poderia ser capaz de resolver isso por adicionando um serviço ao NSS .

    
por 11.02.2014 / 19:35
6

Os namespaces do sistema de arquivos local são seus amigos, embora eles precisem de 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ê quiser 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 pode ser usado como:

with-custom-resolver your-resolv.conf sudo -u someuser some-command arg1
    
por 09.03.2016 / 22:32
4

Resposta simples - NÃO ....

No entanto, se você configurasse uma máquina virual diferente para cada usuário, poderia ter a chance de fazer o que quiser.

Parece um pouco inútil, no entanto.

    
por 22.05.2013 / 22:14
1

Para testar um servidor DNS, você não precisa alterar a configuração do resolvedor. Você só precisa alterar o servidor DNS no comando host , nslookup ou dig .

host www.google.com 8.8.8.8

Você também pode usar um ambiente chroot ou o Linux Containers (LXC) para ter um arquivo resolv.conf diferente.

    
por 22.08.2013 / 22:41