Como 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). Colóquelo en grep hosts
para evitar que se ahogue en la salida y pierda 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 deje que se ejecute en una ventana de terminal hasta que se active.