sudo: suplantar a un usuario

8

Estoy tratando de usar el comando sudo y el archivo sudoers correctamente para poder ejecutar un comando como otro usuario.

Tengo mi archivo sudoers configurado de la siguiente manera:

beans ALL = (root,apache) NOPASSWD: /opt/renovations/var/script-*.sh

root, apache y beans son parte del grupo beans.
Además, / opt tiene 755 permisos, mientras que el directorio / opt / renovations y sus subdirectorios son propiedad del usuario y el grupo de beans.

El comando que intento ejecutar como beans es:

sudo -n -u apache -i /opt/renovations/var/script-test.sh  

-n: es para que no se me solicite una contraseña, ya que esto será ejecutado por un cron
-u: es para que pueda suplantar al usuario de apache
-i: es para que simule un inicio de sesión y mi perfil. está cargado. Necesito esto para poder acceder a las variables de entorno en .profile.

El problema es que cuando ejecuto el comando sudo, recibo el siguiente mensaje:

sudo: lo siento, se requiere una contraseña para ejecutar sudo

He intentado ejecutar esto tanto en AIX como en Ubuntu, pero el problema está en ambos sistemas. Esto funciona si ejecuto:

sudo -n -u apache /opt/renovations/var/script-test.sh

Pero sin el -i, mi entorno no contiene todas las variables de entorno que necesito para estar allí.

¿Hay algo que necesito actualizar en mi archivo sudoers para que esto sea posible?

krzyszto
fuente
¿Qué visudo -cdevuelve? Además, ¿puede confirmar la versión completa de AIX ( oslevel -s) y la versión de sudo instalada?
EightBitTony
1
Además, ¿funciona si enumera el nombre del script explícitamente en sudo en lugar del comodín (y el nombre de archivo es un enlace simbólico?).
EightBitTony
Gracias @EightBitTone. Así que encontré una solución para este problema de configuración de sudoers: cuando el interruptor -i está en uso, entonces el comando real es beans ALL = (root,apache) NOPASSWD: /usr/bin/ksh -c /opt/renovations/var/script-*.sh y, beans ALL = (root,apache) NOPASSWD: /usr/bin/bash -c /opt/renovations/var/script-*.shpero ahora recibo el nuevo error, por ejemplo:ksh: /opt/renovations/var/script-test.sh: cannot execute
krzyszto
Analizar el archivo de registro / var / log / sudolog fue muy útil para depurar el problema anterior (en AIX).
krzyszto

Respuestas:

4

Entonces, como usted mismo dijo @krzysto, la solución es agregar lo siguiente al archivo sudoers

beans ALL = (root,apache) NOPASSWD: /usr/bin/ksh -c /opt/renovations/var/script-*.sh 
beans ALL = (root,apache) NOPASSWD: /usr/bin/bash -c /opt/renovations/var/script-*.sh

La siguiente pieza que falta es asegurarse de que el grupo tenga permisos de ejecución en los scripts, para que pueda ejecutarlos.

frijoles
fuente
Sí, es la solución correcta. El error ksh ocurre solo en el entorno de prueba creado para investigar el problema de suplantación; en real, la producción funciona correctamente
krzyszto