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?
visudo -c
devuelve? Además, ¿puede confirmar la versión completa de AIX (oslevel -s
) y la versión de sudo instalada?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-*.sh
pero ahora recibo el nuevo error, por ejemplo:ksh: /opt/renovations/var/script-test.sh: cannot execute
Respuestas:
Entonces, como usted mismo dijo @krzysto, la solución es agregar lo siguiente al archivo sudoers
La siguiente pieza que falta es asegurarse de que el grupo tenga permisos de ejecución en los scripts, para que pueda ejecutarlos.
fuente