Archivo de host específico del usuario

Me gustaría agregar un archivo de host específico del usuario en mi Mac (El Capitan 10.11.5) a un directorio de inicio de usuarios y verificarlo además de cuando se resuelvan los /etc/hostsnombres de dominio.

Encontré una respuesta similar aquí . Esta respuesta fue un rotundo no porque esa persona no tenía privilegios de superusuario. Este no es mi caso porque, de hecho, tengo privilegios de superusuario.

Encontré otra respuesta aquí , pero eso no parece funcionar en mi máquina. Esta respuesta implica configurar la HOSTALIASESvariable de entorno en ~/.hosts, pero ninguna adición al ~/.hostsarchivo tuvo implicaciones en mi navegador web, que es el objetivo de mi deseo de crear un archivo de host específico para el usuario.

NOTA: Después de leer un poco de las páginas man de bash, la variable de entorno correcta en mac que necesita la segunda respuesta es HOSTFILE. Sin embargo, esto todavía no afectó nada. ¿Pensamientos sobre esto?

EDITAR: Esto es para un entorno de usuario único como sugirió MrWonderful. Sin embargo, me gustaría que la configuración de hosts de un usuario no se vea afectada, pero sí de otro usuario.

¿Pensamientos?

Todavía tengo curiosidad sobre qué beneficio podría proporcionar esto que no podría realizarse a través de medios programáticos.
HOSTALIASES=$HOME/hosts sudo -E dtruss ping foobarmuestra que el único archivo abierto es /etc/hosts. HOSTFILE=$HOME/hoststiene el mismo resultado. La hosts(5)página del manual indica que solo /etc/hostsse lee. Se utiliza la hostname(7)página de manual de estados . HOSTALIASESUgh, más software de Apple roto.

Respuestas (1)

Si está administrando un entorno de un solo usuario, como una MacBook compartida, podría hacer que el .bashrc de cada usuario copie un archivo de host base y luego agregue su personalizado al final. Por ejemplo:

sudo cp /etc/common_hosts /etc/hosts  
sudo cat ~/my_hosts >> /etc/hosts

Esto daría efectivamente a cada usuario sus propias adiciones personalizadas al archivo de hosts . Puede hacer que no se necesite una contraseña para estos comandos sudo usando el comando sudo visudo y agregándolos a los comandos permitidos. Aquí hay algunos ejemplos de la parte inferior de mi archivo sudoers :

# Samples
# %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users  localhost=/sbin/shutdown -h now  

En OS X, el archivo /etc/hosts aparentemente se lee dinámicamente, por lo que no sería necesario reiniciar los servicios de red.

mbp-c17189:~ root# ping goog
ping: cannot resolve goog: Unknown host
mbp-c17189:~ root# ping google.com
PING google.com (172.217.4.238): 56 data bytes
64 bytes from 172.217.4.238: icmp_seq=0 ttl=49 time=4306.507 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 1 packets received, 50.0% packet loss
round-trip min/avg/max/stddev = 4306.507/4306.507/4306.507/0.000 ms
mbp-c17189:~ root# echo 172.217.4.238     goog>>/etc/hosts
mbp-c17189:~ root# ping goog
PING goog (172.217.4.238): 56 data bytes
64 bytes from 172.217.4.238: icmp_seq=0 ttl=49 time=43.639 ms
^C
--- goog ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 43.639/43.914/44.189/0.275 ms
mbp-c17189:~ root# 
Entonces, ¿cómo lo manejas cuando dos personas inician sesión simultáneamente?
Mi respuesta solo se aplicaría a un escenario de un solo usuario a la vez, como en una Macbook, por ejemplo. En un entorno compartido, esto no funcionaría bien/en absoluto.
@Allan - ¿Cuál es tu verdadero objetivo? Quizás si diera un ejemplo más concreto facilitaría una comprensión más profunda del dominio del problema. Especialmente por qué diferentes usuarios necesitarían diferentes nombres o direcciones IP para algunas entradas.
Esto está cerca de lo que buscaba. Realmente quería dejar el archivo principal de hosts solo para que la configuración de hosts para cada usuario se aplicara solo a ellos, pero esto es útil de todos modos.
No es mi objetivo ... Simplemente no veo esto como una solución viable dado que tendría que dar acceso a sudo a los usuarios potencialmente sin contraseña. ¿Qué les pedirá la contraseña cada vez que se edite el archivo host?
@Allan: no es cierto, /etc/hosts se lee dinámicamente
@Allan: al usar 'visudo', puede enumerar los comandos sudo típicos que no requieren sudo o una contraseña. No requeriría que los usuarios necesiten la contraseña de root en absoluto.