
He agregado la siguiente línea única /etc/sudoers
mediante comando visudo
:
www-data ALL=(ALL) NOPASSWD: /var/www/db_backup.sh
Al ejecutar el comando a www-data
través de:
sudo -u www-data /var/www/db_backup.sh
Recibo el siguiente mensaje:
sudo: unable to execute /var/www/db_backup.sh: Permission denied
No estoy seguro de por qué sería así, ya que he utilizado este mismo procedimiento en el pasado sin problemas. Debe haber algo que estoy pasando por alto. ¿Hay algo que le indique a alguien? Mi /etc/sudoers
archivo se enumera a continuación:
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
www-data ALL=(ALL) NOPASSWD: /var/www/db_backup.sh
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
Además, como nota al margen, al intentar ejecutar el comando sudo /var/www/db_backup.sh
desde un proceso php que se ejecuta en www-data, se recibe el siguiente mensaje (aunque supongo que se debe solo al problema de que los permisos no se obtienen del archivo sudoers):
sudo: no tty present and no askpass program specified
EDITAR
ls -al /var/www/db_backup.sh
arroja el siguiente resultado:
-rwxrwx--- 1 root root 523 Jan 7 2019 /var/www/db_backup.sh
Respuesta1
Como se indica en los comentarios, otros usuarios no pueden ejecutar su script. Entonces, como se mencionó, cambie la propiedad del usuario y la propiedad del grupo, luego márquelo como ejecutable chown www-data:www-data /var/www/db_backup.sh && chmod +x /var/www/db_backup.sh
:. Con respecto a su segundo problema, debe preguntarlo por separado, pero de todos modos, sin saber exactamente qué contiene el script, es difícil saber qué está mal.