Desarrollé una aplicación que usa NTP para cambiar la hora de la red, para sincronizar dos de mis computadoras.
Se ejecuta como root
, ya que solo este último puede cambiar la hora y la fecha en Linux (supongo).
Ahora, quiero ejecutarlo como usuario. Pero necesito acceder a la hora.
- ¿Es una buena práctica ejecutar un demonio con una cuenta de usuario que no sea root?
- ¿Debo darle a mi aplicación una capacidad como
CAP_SYS_TIME
? - ¿No introduce una vulnerabilidad de seguridad?
- ¿Hay una mejor manera?
Respuesta aceptada:
¿Es una buena práctica ejecutar un daemon con una cuenta de usuario no root?
Sí, y esto es común. Por ejemplo, Apache comienza como root y luego bifurca el nuevo proceso como www-data (por defecto).
Como se dijo antes, si su programa es pirateado (por ejemplo, inyección de código), el atacante no obtendrá acceso de root, pero estará limitado a los privilegios que le otorgó a este usuario específico.
¿Debo dar una "Capacidad" como "CAP_SYS_TIME"?
Es una buena idea ya que evita usar setuid y limitar los permisos a esta función muy específica.
¿Debería usar otra forma de hacerlo que se consideraría "buena práctica"?
Puede aumentar la seguridad, por ejemplo:
- Ejecute el servicio como usuario sin privilegios, sin shell.
- Usar chroot para bloquear al usuario en su directorio de inicio.