
Ich habe ein PHP-Dienstprogramm, das Post-Anfragen mit Datei als Parameter akzeptiert. Wenn diese Anfrage nun eingeht, möchte ich sie als Root-Benutzer ausführen. Wenn der Benutzer beispielsweise www.mydomain.com/sendtextfiletoftp.php von Postman oder einem anderen Tool aus aufruft, sollte dies als Root-Benutzer ausgeführt werden.
Ich habe versucht sudo visudo
, die folgenden Zeilen zur Sudoers-Datei hinzuzufügen, aber die Anfrage wird immer noch mit dem Apache-Benutzer ausgeführt.
www-data ALL=NOPASSWD: /var/www/html/sendtextfiletoftp.php
apache ALL=NOPASSWD: /var/www/html/sendtextfiletoftp.php
sudo php72 /path/to/file/sendtextfiletoftp.php
Die gleiche Datei funktioniert einwandfrei, wenn sie als Sudo-Benutzer über die Befehlszeile () ausgeführt wird .
Danke für die Hilfe.
Antwort1
Sie müssen dem Apache-Benutzer nicht nur erlauben, Root für einen Befehl zu werden, sondern auch einen Aufruf in Ihrem Code durchführen, der „sudo“ enthält. Normalerweise:
In visudo würde ich so etwas schreiben wie
apache ALL=NOPASSWD: /Pfad/mein_Root_Befehl
In meinem Code /var/www/html/sendtextfiletoftp.php würde ich für den speziellen Teil, der Root-Zugriff benötigt, etwas wie Folgendes einfügen:
exec("sudo /Pfad/mein_Stammbefehl");