Como una herramienta para ayudarlo a encontrar al culpable, aquí hay un dtrace oneliner que imprime el pid y el nombre de cualquier proceso que abre un archivo para escribir, junto con el nombre del archivo:
dtrace -qn 'syscall::open*:entry /arg1&3/ { printf("%d %s %s\n", pid, execname, copyinstr(arg0)); }'
Debe ejecutarse como root (por ejemplo, con sudo). Conéctelo grep hosts
para evitar ahogarse en la salida y perder lo que está buscando:
sudo dtrace -qn 'syscall::open*:entry /arg1&3/ { printf("%d %s %s\n", pid, execname, copyinstr(arg0)); }' | grep hosts
Con suerte, esto le dirá qué proceso está sobrescribiendo el archivo. Simplemente déjelo correr en una ventana de terminal hasta que se active.
</speculation>