
/etc/sudoers
Ich habe dem Via-Befehl die folgende einzelne Zeile hinzugefügt visudo
:
www-data ALL=(ALL) NOPASSWD: /var/www/db_backup.sh
Beim Ausführen des Befehls wie www-data
folgt:
sudo -u www-data /var/www/db_backup.sh
Ich erhalte folgende Meldung:
sudo: unable to execute /var/www/db_backup.sh: Permission denied
Ich bin mir nicht sicher, warum das so ist, da ich dieses Verfahren in der Vergangenheit ohne Probleme verwendet habe. Ich muss etwas übersehen haben. Fällt irgendjemandem etwas auf? Meine /etc/sudoers
Datei ist unten aufgeführt:
#
# 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
Außerdem noch eine Randbemerkung: Beim Versuch, den Befehl sudo /var/www/db_backup.sh
aus einem PHP-Prozess unter www-data auszuführen, wird die folgende Meldung angezeigt (obwohl ich annehme, dass dies nur an dem Problem liegt, dass die Berechtigungen nicht aus der Sudoers-Datei übernommen werden?):
sudo: no tty present and no askpass program specified
BEARBEITEN
ls -al /var/www/db_backup.sh
ergibt folgendes Ergebnis:
-rwxrwx--- 1 root root 523 Jan 7 2019 /var/www/db_backup.sh
Antwort1
Wie in den Kommentaren erwähnt, ist Ihr Skript für andere Benutzer nicht ausführbar. Ändern Sie also wie erwähnt die Benutzer- und Gruppeneigentümerschaft und markieren Sie es dann als ausführbar: chown www-data:www-data /var/www/db_backup.sh && chmod +x /var/www/db_backup.sh
. Zu Ihrem zweiten Problem sollte gesondert gefragt werden, aber ohne genau zu wissen, was das Skript enthält, ist es trotzdem schwer zu sagen, was falsch ist.