ubuntuusers.de

Freigabe SHELL für PHP über /etc/sudeors

Status: Gelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

halloICKEbins

Avatar von halloICKEbins

Anmeldungsdatum:
12. September 2017

Beiträge: 226

Morgen,

ich habe ein PHP-Seite, welche mir die folgenden Kommandos auf der Shell ausführt:

1
2
3
4
5
6
7
8
shell_exec("sudo rm /var/www/html/test/delivery_variables");
                
$search = $_POST["searchstring"];   // wird per Textfeld übergeben

shell_exec("sudo echo '".$search."' >> /var/www/html/test/delivery_variables");

$output = shell_exec("sudo /bin/bash /var/www/html/test/test.bash"); # führt intern eine Suche durch
echo "<pre>$output</pre>";

Wenn die Rechte wie folgt gesetzt sind (/etc/sudeors), funktionieren alle Befehle:

1
www-data ALL=(ALL) NOPASSWD: ALL

Jetzt würde ich natürlich gerne die Rechte der Gruppe www-data auf das Minimum einschränken:

1
2
3
www-data ALL=(ALL) NOPASSWD: /bin/bash /var/www/html/test/test.bash          # 1
www-data ALL=(ALL) NOPASSWD: rm /var/www/html/test/delivery_variables        # 2
www-data ALL=(ALL) NOPASSWD: echo * >> /var/www/html/test/delivery_variables # 3

Befehl Nr. 1 funktioniert weiterhin Befehl Nr. 2 kann nicht gespeichert werden (>>> /etc/sudoers: syntax error near line 50 <<<)

  • Ziel ist hier, dass nur das Löschen von /var/www/html/test/delivery_variables erlaubt ist

Befehl Nr. 3 kann nicht gespeichert werden (>>> /etc/sudoers: syntax error near line 51 <<<)

  • Ziel ist hier, das * als Wildcard genutzt werden kann, um beliebigen Text in die Datei /var/www/html/test/delivery_variables zu schreiben

Verschiedene (" ')-Versuche klappten leider nicht ... Was mache ich falsch bzw. geht es überhaupt so???

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5582

Warum machst du nicht die Datei /var/www/html/test/delivery_variables fuer den Webserver beschreibbar?

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11261

Wohnort: München

Am besten liest du mal die Dokumentation zur sudoers Datei: https://www.sudo.ws/man/1.8.9/sudoers.man.html

Wenn du einen Befehl mit sudo ausführst, gilt das nicht für folgende Shell/Umleitungen. IMHO gibt es auch keinen Grund dafür, dass /var/www/html/test/delivery_variables überhaupt root gehören muss - die Datei kann doch genauso gut dem User gehören, unter dem das PHP-Skript läuft.

Und wenn ich das richtig verstehe, gibt es dann auch keinen Grund shell_exec für Dateioperationen zu nutzen - PHP kann Dateien direkt manipulieren: https://www.w3schools.com/php/php_ref_filesystem.asp

halloICKEbins

(Themenstarter)
Avatar von halloICKEbins

Anmeldungsdatum:
12. September 2017

Beiträge: 226

Ach stimmt ja ... war so im Problem vertieft, dass ich das vergessen hatte 😲 ... dann schreibe ich natürlich über php normal in die Datei

Antworten |