
Estoy ejecutando un paquete de automatización del hogar llamado HomeSeer en un servidor Ubuntu 15.04. Lo tengo configurado para ejecutarse con una cuenta de servicio (llamada "_homeseer") y he cambiado el directorio de la aplicación a _homeseer:_homeseer.
Para instalar actualizaciones de este paquete, descargo un archivo tar.gz y luego ejecuto el script "update.sh" proporcionado por el proveedor. Este script extrae el archivo comprimido, que también se sobrescribe (update.sh)... así que creo que no puedo cambiar ese script, a menos que lo copie en una carpeta separada en algún lugar.
Como parte de update.sh, hay una línea que llama "sudo update_extra.sh". Como estoy ejecutando update.sh como cuenta de servicio, esta línea sudo solicita la contraseña de la cuenta de servicio... la cual no recuerdo (ni creo que quiera).
No quiero otorgarle a esa cuenta todos los derechos sudo sin una contraseña, ya que sería un riesgo de seguridad significativo (es decir, la aplicación ejecuta un servidor web). También soy un poco cauteloso a la hora de otorgarle derechos sudo completos para ejecutar ese archivo update_extra.sh como root, ya que ese archivo puede actualizarse con la misma cuenta de servicio.
Mi pregunta:
¿Es posible configurar sudo (es decir, visudo) de modo que si la cuenta _homeseer intenta usar sudo, solicite la contraseña de mi cuenta personal y se ejecute con los derechos de sudo que tengo? Preferiría no establecer una contraseña de root si puedo evitarla... pero una mirada preliminar parece indicar que tal vez no tenga muchas opciones si quiero seguir este camino.
¿O necesito modificar ese script update.sh, configurar permisos de grupo para poder aplicar las actualizaciones como yo mismo y luego acceder a la cuenta de servicio?
Respuesta1
Puedes hacer que Sudo se ocupe de esto.
Si agrega esto a su archivo sudoers:
_homeseer hostname = (_homeseer) NOPASSWD: /path/to/update.sh
- nombre de host= salida de
hostname
en su máquina.
Una cosa a tener en cuenta es que no existe una forma 100% segura de lidiar con update.sh ya que podría contener cualquier comando, y supongo que cambiará con el tiempo, lo que significa que no se puede usar una función HASH para asegúrese de que el guión sea el mismo que antes.