Apache mit suExec für php für vHost

Apachensklave

New Member
Also das Problem sieht folgendermaßen aus:
Ich habe einen Server mit root-Rechten auf dem ich mehrere vHosts anlegen will. Dazu ist Plesk auf dem Server, aber das ist meiner Meinung nach eher nebensächlich...

Nun soll auf den vHosts CMSe laufen. Vorallem Typo3. Wenn man aber über das Typo3 per PHP Verzeichnisse anlegt, dann sind die Eigentümer dieser Verzeichnisse und Dateien der Apache-User "webuser".
Nun soll aus Sicherheitsgründen die Nutzer des jeweiligen vHost keinen Zugang zu den Dateien der anderen vHosts haben und zudem auch die Möglichkeit über FTP auf die per CMS angelegten Dateien zuzugreifen. Gut, die einfachste Möglichkeit ist es den Apachen und die User in die selbe Gruppe aufzunehmen. Doch dann können die Nutzer über den Apachen-User auch auf die anderen vHosts zugreifen - theoretisch.
Deshalb habe ich nach einem How-To im Netz den Server angepasst und wollte dazu die Apache2 Erweiterung suExec nutzen. Damit können die cgi-Skripte und damit auch php als cgi-Version unter den Rechten des vHost-Users ausgeführt werden...
Das How-To nach dem ich mich orientiert habe:
PHP4/PHP5 + mod_fastcgi + suexec + Apache2 auf Debian Sarge Tutorial/Howto - Another Web Programmers Blog
Apache2 mit PHP FastCGI - Gentoo Linux Wiki
http://archiv.debianhowto.de/de/apache2-phpfcgi-sarge/c_apache2-phpfcgi-sarge.html

um nur einige zu nennen...

Nun ist es so, dass ich nach Abschluß der Arbeit an folgendes error_log-Einträge bekomme:
Code:
[Thu Jul 26 22:37:09 2007] [notice] SIGHUP received.  Attempting to restart
[Thu Jul 26 22:37:09 2007] [warn] NameVirtualHost xxx.xxx.xxx.xxx:443 has no VirtualHosts (<-- _ist ne Macke im Zusammenhang mit Plesk_)
[Thu Jul 26 22:37:10 2007] [notice] mod_python: Creating 10 session mutexes based on 10 max processes and 0 max threads.
[Thu Jul 26 22:37:10 2007] [notice] Apache/2.0.54 (Linux/SUSE) configured -- resuming normal operations
[Thu Jul 26 22:37:10 2007] [notice] FastCGI: wrapper mechanism enabled (wrapper: /usr/sbin/suexec2)
[Thu Jul 26 22:37:10 2007] [notice] FastCGI: process manager initialized (pid 15730)
[Thu Jul 26 22:37:24 2007] [notice] caught SIGTERM, shutting down
[Thu Jul 26 22:37:25 2007] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec2)
[Thu Jul 26 22:37:26 2007] [notice] mod_python: Creating 10 session mutexes based on 10 max processes and 0 max threads.
[Thu Jul 26 22:37:26 2007] [notice] FastCGI: wrapper mechanism enabled (wrapper: /usr/sbin/suexec2)
[Thu Jul 26 22:37:26 2007] [notice] FastCGI: process manager initialized (pid 15830)
[Thu Jul 26 22:37:26 2007] [notice] Apache/2.0.54 (Linux/SUSE) configured -- resuming normal operations
[Thu Jul 26 23:59:29 2007] [notice] caught SIGTERM, shutting down
[Thu Jul 26 23:59:30 2007] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec2)
[Thu Jul 26 23:59:30 2007] [notice] mod_python: Creating 10 session mutexes based on 10 max processes and 0 max threads.
[Thu Jul 26 23:59:30 2007] [notice] FastCGI: wrapper mechanism enabled (wrapper: /usr/sbin/suexec2)
[Thu Jul 26 23:59:30 2007] [notice] FastCGI: process manager initialized (pid 29938)
[Thu Jul 26 23:59:30 2007] [notice] Apache/2.0.54 (Linux/SUSE) configured -- resuming normal operations
failed to open log file
fopen: No such file or directory
[Thu Jul 26 23:59:30 2007] [warn] FastCGI: server "/srv/www/php-fcgi-scripts/domain.tld/php-fcgi-starter" (uid 10001, gid 10001) started (pid 29940)
[Thu Jul 26 23:59:30 2007] [warn] FastCGI: server "/srv/www/php-fcgi-scripts/domain.tld/php-fcgi-starter" (pid 29940) terminated by calling exit with status '1'
[Thu Jul 26 23:59:35 2007] [warn] FastCGI: server "/srv/www/php-fcgi-scripts/domain.tld/php-fcgi-starter" (uid 10001, gid 10001) restarted (pid 29953)
failed to open log file
fopen: No such file or directory
[Thu Jul 26 23:59:35 2007] [warn] FastCGI: server "/srv/www/php-fcgi-scripts/domain.tld/php-fcgi-starter" (pid 29953) terminated by calling exit with status '1'
[Thu Jul 26 23:59:40 2007] [warn] FastCGI: server "/srv/www/php-fcgi-scripts/domain.tld/php-fcgi-starter" (uid 10001, gid 10001) restarted (pid 29957)
failed to open log file
fopen: No such file or directory
[Thu Jul 26 23:59:40 2007] [warn] FastCGI: server "/srv/www/php-fcgi-scripts/domain.tld/php-fcgi-starter" (pid 29957) terminated by calling exit with status '1'
[Thu Jul 26 23:59:45 2007] [warn] FastCGI: server "/srv/www/php-fcgi-scripts/domain.tld/php-fcgi-starter" (uid 10001, gid 10001) restarted (pid 29962)
failed to open log file
fopen: No such file or directory
und das wiederholt er noch einige male und dann bringt die Seite ein ERROR 500.
Die uid 10001 und die gid 10001 sind die User und Group des vHost Nutzers.

Ich bekomme nicht raus, was der mir mit der status '1' Rückgabe aussagen will. Ich verzweifel hier langsam, da ich im Netz scheinbar keine Anwort finde.

Grüße.
 
Last edited by a moderator:
Ich hatte heute auch das Problem das mein cgi script, das mittels suexec ausgeführt wurde mit dem 500er Fehler rausfällt.

Lösung war das Verzeichniss brauchte die gleichen Rechte wie für den suexec User definiert ist.
 
Lösung war das Verzeichniss brauchte die gleichen Rechte wie für den suexec User definiert ist.

Danke für deine Antwort :)

Das ne 500er kommt, liegt denke ich mal einfach daran, daß vom php-Interpreter halt eine '1' zurück gegeben hat und nicht der geparste Inhalt. Somit ist nie was beim Apache angekommen an Inhalten, die er ausgeben könnte.
Aber ich würde halt zu gerne wissen was diese status '1' Rückgabewert bedeuten soll. Oder ob das sogar garnicht der php-Interpreter ist, der den Status so an das Shell-Skript sendet, sondern das Shell-Skript selber den Status '1' meldet...

Grüße, der Apachensklave
 
Last edited by a moderator:
Apache und suexec - Die Fortsetzung

Hallo!

Leider sind bis jetzt keine Antworten gekommen, die das Problem wirklich eingeschränkt haben...
Deshalb haben wir uns etwas weiter in die Tiefen des Systems geschlichen und mit strace mal den Apache durchgejagt: Das Problem scheint sich beim Befehl setgid für das php-fcgi-starter zu liegen...

Aber nochmal langsam und von vorne:
das php-fcgi-starter shell-skript soll unter den rechten des vHost ftp-Users ausgeführt werden. Soweit genau so wie im How-To, die ich weiter unten schon erwähnt haben, ausgeführt.
der ftp-User hat die uid 10001 und die gid 10001 und ist Mitglied dieser Gruppe.
Nun spuckt strace beim Versuch von suexec die gid auf 10001 zu setzen auf den Fehler:
[pid 30478] write(3, "[2007-08-04 17:22:56]: uid: (ftp_user/ftp_user) gid: (clientgroup/clientgroup) cmd: php-fcgi-starter\n", 99) = 99
[pid 30478] setgid32(10001) = -1 EPERM (Operation not permitted)

Keine Ahnung warum er jammert...
Nach einer manpage bedeutet dieses EPERM:
Die effektive UID (Benutzer ID) entspricht nicht dem Eigentümer der Datei und ist auch nicht Null (d.h. Super-User). EPERM kann auch anzeigen, dass Eigentümer (owner) oder Gruppe (group) falsch angegeben wurden.

Pech nur das die Datei DEFINITIV die gid 10001 hat. Hat jemand so ein Problem schon mal gehabt, oder eine Idee, was man noch ausprobieren könnte?

Grüße,
der Apachensklave
 
Back
Top