
Implementation: Privilege Separation


two processes
parent, runs as root
ntp engine, runs as _ntp:_ntp and chroots to /var/empty

socketpair in between
use the buffer- and imsg-framework I wrote for bgpd

two message types: IMSG_ADJTIME and IMSG_HOST_DNS
ntp engine asks the parent to do the adjtime() - requires root
ntp engine asks the parent to resolve hostnames - requires access to /etc
very strict validity checking, of course


