2016-07-29 66 views
0

Ich habe ein Skript script.py, die ich über CGI ausführen kann, indem Sie zu mydomain.com/runscript navigieren.Ausführen von Skript erfordern root-Zugriff über CGI

Das Skript sendet jedoch einen Unterprozessaufruf an echo "mysqldump ..." | sudo -i und sudo python mit os.system (COMMAND). Wenn ich versuche, das Skript über den Weblink zu laufen, bekomme ich diesen Fehler in /var/log/apache2/error.log:

[Fr 29 Jul 16: 52: 42,515223 2016] [cgi: error ] [pid 3013] [client ## ### ## ##... #####] AH01215: sudo: keine tty vorhanden und kein askpass Programm angegeben

Dies liegt daran, CGI läuft als Benutzer www-Daten, die keine sudo-Berechtigung hat.

Ich habe versucht, diese zu meinen sudoers Datei:

%www-data ALL = (root) NOPASSWD: /var/www/html/scripts/script.py 

jedoch die Fehler bestehen bleiben. Warum erhalten die Subprozessaufrufe keinen Root-Zugriff und wie kann ich sie ihnen und NUR ihnen geben? Vielen Dank!

Antwort

0

Sie das Passwort in sudo-Befehl übergeben kann es durch Rohrleitungen:

echo <your password> | sudo -S <your command>