Ejecutar un servicio como root

Ejecutar un servicio como root

Tengo un programa Java que uso para automatizar el proceso de creación de configuraciones de VPN para clientes. El programa llama a un par de scripts bash, crea y copia archivos. Tengo que ejecutarlo como usuario root porque toda la configuración de VPN está en /etc/openvpn. Para este directorio necesito privilegios de root. En la misma máquina tengo el servidor de aplicaciones Glassfish y llamará al programa Java mencionado. Glassfish se ejecuta con un usuario no root.

¿Cuál es la mejor y más segura forma de ejecutar un programa como usuario root, por supuesto, sin ingresar una contraseña si lo ejecuto mediante sudo?

Respuesta1

La opción más segura sería averiguar a qué grupo pertenece openvpn y agregar un usuario sin privilegios con acceso a él.la forma recomendada es crear un usuario openvpny dale privilegios para usar openvpn usando sudo.

Agregar al grupo el usuario con el que ejecuta este programa (probablemente solo con acceso de lectura) para darle acceso a openvpn y otorgarle los privilegios sudo necesarios (para ejecutar openvpn, configuraciones idénticas a las que usa el usuario de openvpn) debería ser suficiente. sin peligro.

Usar root es una forma perezosa;)

Respuesta2

Lo que descubrí es que al ejecutar un comando como sudo sin ingresar la contraseña, hay dos opciones:

  • eco CONTRASEÑA | COMANDO sudo -S
  • agregando la siguiente línea a /etc/sudoers

    nombre de usuario TODOS = (TODOS) NOPASSWD: COMANDO

Tenga en cuenta que esta línea debe aparecer después de todas las definiciones de grupo. Puedes verificar qué privilegios de sudo tienes usando sudo -l. Para este caso esto produce:

(ALL) ALL
(ALL) NOPASSWD: COMMAND

Esto significa que para todos los comandos se requerirá contraseña excepto para el COMANDO. Si pusiéramos username ALL=(ALL) NOPASSWD: COMMANDantes de las definiciones de grupo, sudo -lobtendríamos:

(ALL) NOPASSWD: COMMAND
(ALL) ALL

Esto aún requeriría una contraseña para el COMANDO, ya que (ALL) ALLse especifica después de la línea NOPASSWD.

información relacionada