Is it a good practice to run a daemon under a non-root user account?
Sim, e isso é comum. Por exemplo, o Apache inicia como root e, em seguida, cria um novo processo como www-data (por padrão).
Como dito anteriormente, se o seu programa for invadido (ex: injeção de código), o invasor não terá acesso root, mas ficará limitado aos privilégios que você deu a esse usuário específico.
Shall I give a "Capability" such as "CAP_SYS_TIME"?
É uma boa ideia, já que você evita usar setuid e limitar as permissões a esse recurso específico.
Shall I use another way to do so that would be considered "Good Practice"?
Você pode aumentar a segurança, por exemplo:
- Execute o serviço como usuário sem privilégios, sem shell.
- Use chroot para bloquear o usuário em seu diretório inicial.