Hilfe: apache user darf (fast) nichts

Alles, was den Apache betrifft, kann hier besprochen werden.

Hilfe: apache user darf (fast) nichts

Postby tunefish » 17. September 2009 09:39

Hilfe, habe ein Problem, das ich jetzt schon seit Tagen versuche zu ergoogeln und auch meine Kollegen haben keine Ahnung...
Auch wenn das ganze auf php passiert, hoffe ich, dass ich trotzdem im Topic Apache richtig bin, da es sich meiner Meinung nach um ein Rechtebeschränkungs-Problem des Apache-Users handelt.

Folgendes:
Ich habe diverse php-scripts, die diverse Sachen auf Shell-Basis durchführen sollen.
Unter anderem über shell_exec(), sowie über system() und zum teil auch scandir().
Über shell_exec soll zum Beispiel ein shellscript aufgerufen werden - Owner des ganzen Ordners (rekursiv gesetzt) ist www-data, Gruppe www-data.
Dies entspricht auch dem User, den Apache verwendet (nachgeschaut in der apache config).
Habe sogar schon chmod rekursiv auf 0777 gesetzt.
Doch bei ausführen des php-Programms bekomme ich im apache error-log den fehler "permission denied".
Genauso bei scandir().
Sachen wie shell_exec("ps -ef") funktionieren aber.

Übrigens hab ich auch schon versucht, das ganze mit "sudo -u root" auszuführen, dann fragt er aber laut apache log Benutzer-Interaktiv nach dem Passwort für www-data.
(Der natürlich erstens keins hat, und zweitens sich auch gar nicht einloggen darf) Funktioniert also auch nicht.

Das komische ist halt, dass das ganze in genau der Form auf einem früheren Server mal funktioniert hat (auch ohne sudo) - gleiche Linux Distribution (Ubuntu 8.04 Server), gleicher Apache2, nur haben wir am neuen Server alles selbst installiert. Haben wir irgendeine Einstellung vergessen? Irgendwas, was www-data mehr Rechte gibt?

Danke im Voraus
Chris
tunefish
 
Posts: 7
Joined: 17. September 2009 09:25

Re: Hilfe: apache user darf (fast) nichts

Postby Nobbie » 17. September 2009 15:49

tunefish wrote:Doch bei ausführen des php-Programms bekomme ich im apache error-log den fehler "permission denied".


Da Apache keine PHP-Fehler logged, sondern nur seine eigenen Rechte verwaltet, liegt es nicht an PHP und auch (vielleicht) nicht an fehlenden Rechten der Ordner.

Da müßtest Du schon haargenau aufschreiben, wie Du welches Script aufrufst, welches dann wo und wie welchen (genauen!) Fehler produziert (voller Wortlaut!).
Nobbie
 
Posts: 13183
Joined: 09. March 2008 13:04

Re: Hilfe: apache user darf (fast) nichts

Postby tunefish » 17. September 2009 16:12

Nagut, dann nochmal ganz genau:

Code: Select all
system("nohup /var/games/user123/user123_starter.sh > /dev/null &", $result);

/var/log/apache2/error.log wrote:nohup: cannot run command `/var/games/user123/user123_starter.sh': Permission denied

------------------------------------------------------------------------------------------------------------------------------------------------------------------
Code: Select all
system("/var/games/user123/user123_starter.sh", $result);

/var/log/apache2/error.log wrote:sh: /var/games/user123/user123_starter.sh: Permission denied

------------------------------------------------------------------------------------------------------------------------------------------------------------------
Code: Select all
$dirs = scandir("/var/games/user123/");

Website output wrote:Warning: scandir(/var/games/user123/) [function.scandir]: failed to open dir: Permission denied in /var/www/cp/functions.php on line 80

------------------------------------------------------------------------------------------------------------------------------------------------------------------
Code: Select all
$result = shell_exec("ps -ef");
--> Funktioniert - gibt mir die Prozessliste sauber zurück.

Das ganze wird ganz gewöhnlich über den webserver aufgerufen als 'Webseite' (also nich von der console oder so)
Last edited by tunefish on 17. September 2009 16:29, edited 1 time in total.
tunefish
 
Posts: 7
Joined: 17. September 2009 09:25

Re: Hilfe: apache user darf (fast) nichts

Postby tunefish » 17. September 2009 16:20

Mir is grad aufgefallen, dass ich ja den unterschied habe, dass ich "ps -ef" über shell_exec aufrufe und den shellscript über system...
Also hab ich folgendes probiert:

Code: Select all
shell_exec("nohup /var/games/user123/user123_starter.sh > /dev/null &")

was aber den gleichen effekt hatte:
/var/log/apache2/error.log wrote:nohup: cannot run command `/var/games/user123/user123_starter.sh': Permission denied
tunefish
 
Posts: 7
Joined: 17. September 2009 09:25

Re: Hilfe: apache user darf (fast) nichts

Postby Nobbie » 17. September 2009 16:35

Dann zeige uns mal die Rechte der Dateien. Mache mal ein

Code: Select all
ls -l /var/games/user123/user123_starter.sh


und zeige hier das Ergebnis.

Und mache zusätzlich noch

Code: Select all
ls -ld /var
ls -ld /var/games
ls -ld /var/games/user123


und zeige ebenfalls das Ergebnis hier.
Nobbie
 
Posts: 13183
Joined: 09. March 2008 13:04

Re: Hilfe: apache user darf (fast) nichts

Postby tunefish » 17. September 2009 16:42

nungut, dass mit dem user123 war nur ein fiktives Beispiel,
aber hier das ganze in der tatsächlichen konstellation:

root@hostnova:/# ls -ld /var
drwxr-xr-x 16 root root 4096 Sep 13 12:58 /var
root@hostnova:/# ls -ld /var/games/
drwx------ 6 eDiT root 4096 Sep 12 18:25 /var/games/
root@hostnova:/# ls -ld /var/games/samp/
drwxr-xr-x 5 dghost users 4096 Sep 15 22:38 /var/games/samp/
root@hostnova:/# ls -ld /var/games/samp/tunefish/
drwxrwxrwx 7 www-data www-data 4096 Sep 16 17:00 /var/games/samp/tunefish/
root@hostnova:/# ls -l /var/games/samp/tunefish/tunefish_restarter.sh
-rwxrwxrwx 1 www-data www-data 115 Sep 16 10:09 /var/games/samp/tunefish/tunefish_restarter.sh

die verzeichnisse wurden halt von verschiedenen menschen angelegt, deswegen root->eDiT->dghost->www-data->www-data
aber eigentlich dürfte doch auch nur die datei interessieren, die ausgeführt werden soll - bzw. die, die dann vom programm benutzt werden auch...
Aber doch nich die darüberliegenden oder?
tunefish
 
Posts: 7
Joined: 17. September 2009 09:25

Re: Hilfe: apache user darf (fast) nichts

Postby tunefish » 17. September 2009 17:34

Oh nein das darf doch nich war sein...

es lag wirklich an der Berechtigung des darüberliegenden "games" ordner, der nur auf drwx------ war!!
Danke für den Denkansatz...

Aber kann mir das dann nochmal einer erklären, warum das so ist?
tunefish
 
Posts: 7
Joined: 17. September 2009 09:25

Re: Hilfe: apache user darf (fast) nichts

Postby Nobbie » 17. September 2009 18:04

tunefish wrote:nungut, dass mit dem user123 war nur ein fiktives Beispiel,


Oh wie ich das liebe.... (wieso glaubt eigentlich fast jeder, man müsse irgendeinen Quatsch erzählen, anstatt die WAHRHEIT!)? Im Zweifel (und das passiert in 90% aller Fälle) kaschiert man damit die wahre Fehlerursache. Es ist ja so schon unendlich schwer, "remote" zu debuggen, wenn man nicht vor dem Rechner persönlich sitzt. Und dann auch noch Phantasiedaten und "ungefähr so" Sachverhalte bekommen - das grausamste vom grausamen.

tunefish wrote:Aber kann mir das dann nochmal einer erklären, warum das so ist?


Weil das Rechtemanagement unter Unix nun einmal so funktioniert. Wenn in einem Pfad ein Verzeichnis keinerlei Rechte zusichert, dann ist alles, was darunter liegt, unerreichbar für den User. Da nützt es natürlich auch nichts, wenn man "zufällig weiß", was darunter für Ordner und Dateien liegen - man hat keinen Zugriff darauf, und das ist auch gut und richtig so. Sonst könnte man allein durch "raten" das Rechtemanagement aushebeln.
Nobbie
 
Posts: 13183
Joined: 09. March 2008 13:04

Re: Hilfe: apache user darf (fast) nichts

Postby tunefish » 17. September 2009 18:37

Nobbie wrote:Oh wie ich das liebe.... (wieso glaubt eigentlich fast jeder, man müsse irgendeinen Quatsch erzählen, anstatt die WAHRHEIT!)? Im Zweifel (und das passiert in 90% aller Fälle) kaschiert man damit die wahre Fehlerursache. Es ist ja so schon unendlich schwer, "remote" zu debuggen, wenn man nicht vor dem Rechner persönlich sitzt. Und dann auch noch Phantasiedaten und "ungefähr so" Sachverhalte bekommen - das grausamste vom grausamen.


Schuldigung ^^. aber eben genau aus dem Grund dass ich das nicht wusste mit den darunter liegenden Ordnern, dass die nicht zugänglich sind, wollte ich ungern meine komplette verzeichnisstruktur preisgeben ;)
Aber hat ja trotzdem zum erwünschten Ergebnis geführt.

Nobbie wrote:Da nützt es natürlich auch nichts, wenn man "zufällig weiß", was darunter für Ordner und Dateien liegen - man hat keinen Zugriff darauf


Alles klar, vielen Dank - genau da lag mein Denkfehler
tunefish
 
Posts: 7
Joined: 17. September 2009 09:25


Return to Apache

Who is online

Users browsing this forum: No registered users and 117 guests

cron