Ich habe jetzt das in
visudo hinzugefügt:
www-data ALL=(ALL) NOPASSWD: ALL
Den Raspberry Pi einmal neugestartet und dann mal eine
test.py Datei erstellt mit diesem Inhalt:
import os
if not os.geteuid() == 0:
print('You need root rights to start the script')
print('FERTIG')
Wenn ich sie so ausführe
python test.py
, bekomme ich diesen Output:
You need root rights to start the script
FERTIG
Wenn ich sie mit sudo ausführe
sudo python test.py
, bekomme ich diesen Output:
FERTIG
Dementsprechen, sollte wenn alles klappt als Output nur
FERTIG kommen.
Jetzt habe ich den Code einmal ausgeführt:
sudo -u www-data python test.py
Als Output kam dabei das heraus:
You need root rights to start the script
FERTIG
Also hat er aus irgendeinem Grund das
sudo hier nicht ausgeführt. Ich bin dann davon ausgegangen, dass sich das
sudo nur darauf bezieht, dass der hintere Code als
www-data ausgeführt werden soll. Also habe ich genau das gleiche noch einmal so ausprobiert:
sudo -u www-data sudo python test.py
Dabei erhielt ich nun das als Output, wobei ich nach dem Passwort von
www-data aufgefordert wurde.
Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die
Regeln erklärt hat. Normalerweise läuft es auf drei Regeln hinaus:
#1) Respektieren Sie die Privatsphäre anderer.
#2) Denken Sie nach, bevor Sie tippen.
#3) Mit großer Macht kommt große Verantwortung.
[sudo] Passwort für www-data:
Das wunderte mich jetzt etwas, da ich nie ein Passwort festgelegt hatte und ich auch eigentlich dachte, dass man kein Passwort dafür benötigt.
Das eigentliche Problem ist eher, wenn ich jetzt an das direkte Problem (Also per
Apache/PHP) das ganze probiere zu starten.
dafür habe ich diese Datei erstellt
/var/www/example.com/httpd/inc/test.php, die sich über
https://example.com/inc/test.php aufrufen lässt.
Diese Datei hat diesen Inhalt:
<?php
echo shell_exec("sudo python /home/pi/Desktop/test.py");
echo "<br>test";
Wenn ich jetzt
https://example.com/inc/test.php aufgerufen habe, war das der Ihnalt der Seite:
test
Zum Vergleich, habe ich hier das
sudo einmal entfernt:
<?php
echo shell_exec("python /home/pi/Desktop/test.py");
echo "<br>test";
Da war das der Output:
You need root rights to start the script FERTIG
test
Ich weiß leider nicht woran das Problem liegt.
Die Datei
/home/pi/Desktop/test.py hat übrigends diese Berechtigungen:
Das hier ist der vollständige Inhalt der
visudo Datei:
#
# 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: ALL
# 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