PHP unter Apache als root laufen lassen

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
jmar83
Beiträge: 300
Registriert: 20.06.2013 20:20:15

PHP unter Apache als root laufen lassen

Beitrag von jmar83 » 14.01.2019 16:55:26

Hallo zusammen

Als erstes: Sicherheit ist hier nicht relevant, um den ensprechenden Beiträgen "vorzubeugen"...;-)

Der Befehl...

Code: Alles auswählen

usermod -a -G root www-data
...scheint in meinem Fall nix zu bringen, obwohl "www-data" in der Gruppe "root" ist...

Code: Alles auswählen

root@localhost:/var/log/apache2# groups www-data
www-data : www-data root
...scheint es nicht zu gehen. Dieser Befehl ist nicht in der Lage (Web-, NICHT PHP-Konsolenanwendung!!)

Code: Alles auswählen

$ret = shell_exec("mkdir ./wlan_data");
echo $ret;

"$ret" gibt mir in diesem Fall REIN GAR NIX aus. (???)
Freundliche Grüsse, Jan

Benutzeravatar
niemand
Beiträge: 13055
Registriert: 18.07.2004 16:43:29

Re: PHP unter Apache als root laufen lassen

Beitrag von niemand » 14.01.2019 17:10:20

Scripte unter ’nem gegebenen User führt man in der Regel mit suexec aus. Das ist so gebaut, dass es nichts als Root ausführt – aus Gründen. Zumindest war’s das, als ich noch mit PHP rumgepfuscht habe. In dem Fall wird man’s sich selbst mit den entsprechenden Optionen neu bauen müssen.
jmar83 hat geschrieben: ↑ zum Beitrag ↑
14.01.2019 16:55:26
"$ret" gibt mir in diesem Fall REIN GAR NIX aus.
Was sollte ein mkdir deiner Meinung nach denn ausgeben, wenn es keinen Fehler gab?
ENOKEKS

Benutzeravatar
jmar83
Beiträge: 300
Registriert: 20.06.2013 20:20:15

Re: PHP unter Apache als root laufen lassen

Beitrag von jmar83 » 14.01.2019 18:41:46

"Scripte unter ’nem gegebenen User führt man in der Regel mit suexec aus. Das ist so gebaut, dass es nichts als Root ausführt..."
Dann muss also der Apache-User "www-data" ein "Sudoer" sein, also in deren Liste eingetragen werden? Also zum Ausführen von Systembefehlen kannte ich bisher nur "exec(...)" sowie "shell_exec(...)"... suexec(...) kannte ich bisher nicht, gemäss der Google-Suche ist das aber eher eine Apache-Erweiterung für CGI und SSI -> https://httpd.apache.org/docs/2.4/suexec.html (?)

Insbesondere shell_exec(...) sollte doch das ausgeben in meinem Fall (https://stackoverflow.com/questions/709 ... ec-vs-exec ), wenn doch der Befehl 'shell_exec("mkdir ./wlan_data");' nicht erfolgreich ausgeführt werden konnte. (Das Verzeichnis existiert nicht, das Anlegen hat also nicht geklappt)

Ich denke eher, das Problem ist dass PHP in einem anderen Sicherheitskontext als "root" ausgeführt wird, wobei ich gerade nicht weiss wie PHP aktuelle läuft (Modul, FastCGI?). Na ja, ich denke eher als Modul, installiert habe ich jedenfalls ganz gewöhnlich mit "apt-get install apache2" sowie "apt-get install php".

Mit der SSH2-Komponente der Library "phpseclib" (http://phpseclib.sourceforge.net/) hat es natürlich geklappt (ist aber eher langsam), da der SSH-Dienst läuft und "PermitRootLogin" auf "Yes" ist. (localhost:22) Damit kann ich jegliche Befehle ausführen, und erhalte sogleich wie korrekte Textausgabe (wie unter der Konsole) als String.
Freundliche Grüsse, Jan

Benutzeravatar
niemand
Beiträge: 13055
Registriert: 18.07.2004 16:43:29

Re: PHP unter Apache als root laufen lassen

Beitrag von niemand » 14.01.2019 18:56:55

jmar83 hat geschrieben: ↑ zum Beitrag ↑
14.01.2019 18:41:46
Dann muss also der Apache-User "www-data" ein "Sudoer" sein, also in deren Liste eingetragen werden?
Nein, das hat miteinander nix zu tun.
jmar83 hat geschrieben: ↑ zum Beitrag ↑
14.01.2019 18:41:46
Ich denke eher, das Problem ist dass PHP in einem anderen Sicherheitskontext als "root" ausgeführt wird
Ja, üblicherweise als www-data. Das Modul suexec ist dazu da, Scripte unter anderen Usern laufen zu lassen – muss man halt entsprechend konfigurieren, seinen httpd. Nur eben als Root wird auch das Modul nicht ausführen, sofern man nicht Gewalt anwendet. Dazu verweise ich dann mal auf dessen Doku.
ENOKEKS

Benutzeravatar
jmar83
Beiträge: 300
Registriert: 20.06.2013 20:20:15

Re: PHP unter Apache als root laufen lassen

Beitrag von jmar83 » 14.01.2019 19:02:17

Ich habe nun "www-data" wieder aus der root-Gruppe entfernt. Besser so, lieber irgendwelche Spezialkonfigurationen bei Apache und/oder PHP sein lassen und die besagte Komponente verwenden...;-)

Vielen Dank!!
Freundliche Grüsse, Jan

Antworten