The DNS resolution provided on the local machine via
/etc/hosts isn't updatable by a user account, which makes the following use-case a problem without
root access :
DNS can be used as a poor-man's microservice resolution system, whereby a given microservice name can be switched to point from a local development machine to a remote testing machine, to a production machine purely (and immediately) by adjusting DNS entries.
Cleanest way didn't pan out...
One solution considered was to install a local DNS server. However, while the obvious choice (
dnsmasq) can make use of one or more
--addn-hosts files and even watch
--hostsdir directories for updated files - the addresses there are cumulative - so that if an address is flipped from one IP to another and back, both IPs will be returned in a round-robin fashion. To reload the configuration requires a
SIPHUP that a regular user cannot (?) issue. This eliminated this almost-clean route.
At the end of a lengthy internal debate, the cave-in approach was chosen : Change the mode of
/etc/hosts to allow the
dnsmasq group (or another suitable one on your machine) to have
rw permissions, and grant your user access to that group...
Simply change permissions on the
/etc/hosts file :
chmod g+w /etc/hosts chown root:dnsmasq /etc/hosts ls -l /etc/hosts usermod -G dnsmasq myusername
Test the user's new permissions
The change will be system-wide upon next login. But can also be used immediately in a terminal in the current boot-cycle using :
su -i -u $(whoami)
Done (with a bit of a sigh).