
Eu adicionei a seguinte linha única /etc/sudoers
via comando visudo
:
www-data ALL=(ALL) NOPASSWD: /var/www/db_backup.sh
Ao executar o comando como www-data
via:
sudo -u www-data /var/www/db_backup.sh
Recebo a seguinte mensagem:
sudo: unable to execute /var/www/db_backup.sh: Permission denied
Não sei por que isso aconteceria, pois usei esse mesmo procedimento no passado sem problemas. Deve haver algo que estou ignorando. Alguma coisa aponta para alguém. Meu /etc/sudoers
arquivo está listado abaixo:
#
# 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
Além disso, como observação lateral, ao tentar executar o comando sudo /var/www/db_backup.sh
de dentro de um processo php em execução em www-data, a seguinte mensagem é recebida (embora eu deduza que isso é apenas devido ao problema de as permissões não serem obtidas no arquivo sudoers?):
sudo: no tty present and no askpass program specified
EDITAR
ls -al /var/www/db_backup.sh
produz o seguinte resultado:
-rwxrwx--- 1 root root 523 Jan 7 2019 /var/www/db_backup.sh
Responder1
Conforme observado nos comentários, seu script não pode ser executado por outros usuários. Portanto, conforme mencionado, altere a propriedade do usuário e do grupo e marque-o como executável chown www-data:www-data /var/www/db_backup.sh && chmod +x /var/www/db_backup.sh
:. Em relação ao seu segundo problema, ele deveria ser perguntado separadamente, mas de qualquer forma, sem saber exatamente o que o script contém, fica difícil dizer o que há de errado.