GNU/Linux >> Tutoriales Linux >  >> Linux

¿Es una buena práctica ejecutar un daemon con una cuenta de usuario no root?

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.

Linux
  1. 4 formas de deshabilitar la cuenta raíz en Linux

  2. Ejecutar Podman sin root como usuario no root

  3. Una introducción a la supervisión de cuentas de usuario de Linux

  4. ¿Administradores de paquetes no root?

  5. ¿Soluciones de virtualización bajo OpenBSD?

Cómo ejecutar Docker como usuario no root en Linux

¿Cómo cambiar la imagen de perfil de la cuenta?

Permitir que pam ejecute cronjobs incluso si la contraseña de usuario ha caducado

Cómo usar sudo para permitir que un usuario no root ejecute un comando en particular

¿Cómo ejecutar sbt como demonio?

Ejecute un script de shell como un usuario diferente