"É ..." Bem, sim.
"Como" é onde fica complicado.
Basicamente, você tem duas opções reais em que posso pensar. Assumindo que você está usando o Gnu libc, e você tem suporte ao nsswitch (eu me lembro vagamente de que algumas distribuições podem ter desativado isso?), Uma opção poderia ser substituir o módulo DNS normal do NSS (por exemplo, /lib64/libnss_dns*
) com uma versão personalizada que verificaria, talvez ~/.config/resolv.conf
ou mais.
Note, por "substituir" quero dizer para adicionar outro módulo, com um nome único, que você se refere a partir de /etc/nsswitch.conf
. Pode-se "simplesmente" separar o código usado para construir a versão "normal" e adicionar algo para construir uma versão por usuário a partir dele.
A outra opção pode ser usar namespaces do kernel para “montar” um substituto resolv.conf
da perspectiva dos processos de cada usuário. (Veja um tratamento muito completo da IBM nos comentários.)
Não tenho conhecimento de nenhuma ferramenta existente para facilitar, no entanto.
Uma terceira opção que ocorre para mim é construir cada usuário com uma chroot
jail, com a maioria dos arquivos com hard-link ou bind-mounted, e alguns arquivos selecionados como resolv.conf
alterados no local.