target uid/gid mismatch bei fastcgi
-
- Posts: 64
- Joined: 2003-02-25 15:47
target uid/gid mismatch bei fastcgi
Ich habe auf meinem Root (suse 10.2 64bit) den Apache2 laufen und wollte per fastcgi/suexec den Vhost eigene User zuweisen. Die Installation habe ich über die Suse eignen RPM vorgenommen, so das eigentlich alles am richtigen Platz sein sollte. fcgid wurde den Module hinzugefügt und die vhost um den Eintrag für User und Gruppe ergänzt.
Wenn ich versuche PHP Datein auf den Vhost aufzurufen erhalten ich einen Fehler in der suexec.log:
target uid/gid (1001/100) mismatch with directory (0/0) or program (0/0)
Was dieser Fehler bedeutet habe ich nachgelesen - aber die Rechte im Vhost sowie die des Vhost Verzeichnis und der PHP Datein stimmen überein. Normaler weise sollte da auch nicht (0/0) auftauchen sondern der möglicherweise falsche User.
Darauf hin hatte ich etwas nachgelesen und einer hatte erwähnt das dies mit dem Zugriff aufs php Binary zu tun haben kann. Daher habe ich testweise
/srv/www/cgi-bin/php5 auf den Benutzer und Gruppe 1001/100 geändert.
Damit laufen die PHP Datein Ordnungsgemäß mit dem gewünschten User - dieser vorgehensweise ist aber falsch - der Fehler müßte irgendwie mit der Zuweisung des php Binary zu tun haben. Vielleicht habe ich nur eine Ordnerangabe vergessen - habt Ihr eine Idee ?
Wenn ich versuche PHP Datein auf den Vhost aufzurufen erhalten ich einen Fehler in der suexec.log:
target uid/gid (1001/100) mismatch with directory (0/0) or program (0/0)
Was dieser Fehler bedeutet habe ich nachgelesen - aber die Rechte im Vhost sowie die des Vhost Verzeichnis und der PHP Datein stimmen überein. Normaler weise sollte da auch nicht (0/0) auftauchen sondern der möglicherweise falsche User.
Darauf hin hatte ich etwas nachgelesen und einer hatte erwähnt das dies mit dem Zugriff aufs php Binary zu tun haben kann. Daher habe ich testweise
/srv/www/cgi-bin/php5 auf den Benutzer und Gruppe 1001/100 geändert.
Damit laufen die PHP Datein Ordnungsgemäß mit dem gewünschten User - dieser vorgehensweise ist aber falsch - der Fehler müßte irgendwie mit der Zuweisung des php Binary zu tun haben. Vielleicht habe ich nur eine Ordnerangabe vergessen - habt Ihr eine Idee ?
-
- Posts: 5923
- Joined: 2004-05-23 12:53
Re: target uid/gid mismatch bei fastcgi
Du benutzt auf deinem System SuExec. Das stellt gewisse Anforderungen an die CGI-Programme, welche aufgerufen werden, z. B. dass die UID/GID eine bestimmte ist, dass das CGI-Programm unterhalb eines festen DocumentRoots liegt usw.
Aus Sicht deines Webservers wird das PHP-Binary aufgerufen und nicht das PHP-Skript selbst, daher muss das PHP-Binary den Anforderungen genügen. Du kannst dir einen kleinen Workaround basteln, indem du das PHP-Binary aus einem Shellskript heraus aufrufst, welches die entsprechenden Rechte gesetzt hat. Das hat noch den Vorteil, dass du gewisse Parameter über Environmentvariablen in dem Skript steuern kannst.
Aus Sicht deines Webservers wird das PHP-Binary aufgerufen und nicht das PHP-Skript selbst, daher muss das PHP-Binary den Anforderungen genügen. Du kannst dir einen kleinen Workaround basteln, indem du das PHP-Binary aus einem Shellskript heraus aufrufst, welches die entsprechenden Rechte gesetzt hat. Das hat noch den Vorteil, dass du gewisse Parameter über Environmentvariablen in dem Skript steuern kannst.
-
- Posts: 64
- Joined: 2003-02-25 15:47
Re: target uid/gid mismatch bei fastcgi
Erstmal vielen Dank für Deine Antwort.
Ich hatte schon überlegt ob es eine Möglichkeit gibt einfach die PHP Binary für jeden User zu kopieren und mit den entsprechenden Rechten zu hinterlegen. Der dafür nötige Eintrag:
FCGIWrapper /srv/www/cgi-bin/php5 .php
[/code]wird in den VHost Configs vom Apache2 nicht angenommen.
Das hatte ich durch den Test mit dem Benutzerwechsel des PHP-Binary bereits raus gefunden. Aber ich kann mir nicht vorstellen das dies so gewollt ist.Aus Sicht deines Webservers wird das PHP-Binary aufgerufen und nicht das PHP-Skript selbst, daher muss das PHP-Binary den Anforderungen genügen.
Kannst Du mir dafür bitte ein Muster geben ? Ich kann mir das noch nicht so richtig vorstellen - da das Shellscript ja auch nur die Rechte eines Benutzers haben kann.Du kannst dir einen kleinen Workaround basteln, indem du das PHP-Binary aus einem Shellskript heraus aufrufst, welches die entsprechenden Rechte gesetzt hat.
Ich hatte schon überlegt ob es eine Möglichkeit gibt einfach die PHP Binary für jeden User zu kopieren und mit den entsprechenden Rechten zu hinterlegen. Der dafür nötige Eintrag:
FCGIWrapper /srv/www/cgi-bin/php5 .php
[/code]wird in den VHost Configs vom Apache2 nicht angenommen.
-
- Posts: 1031
- Joined: 2002-10-14 22:56
Re: target uid/gid mismatch bei fastcgi
Code: Select all
#!/bin/sh
# Pfad zur php.ini, ohne / am Ende.
PHPRC="/var/www/php-config/legendz"
export PHPRC
# Maximale Requests pro php-Prozess, verhindert immer
# groesser werdende php-binarys zB durch memory leaks.
# Nicht zu niedrig waehlen, da sonst bei hoher Load
# die Binarys zu oft neu gestartet werden muessen. (>=5000)
# Wert IMMER setzen, 0 fuer unendlich (ab PHP 5.2)
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS
# Anzahl an php-fcgi-children (Prozesse)
# Wert IMMER setzen, 0 fuer keine Children (ab PHP 5.2), saemtliche Anfragen uebernimmt dann der Parent.
# --------------------
# ACHTUNG mod_fcgid:
# Bei mod_fcgid und DefaultMaxClassProcessCount > (groesser als) 1
# Wert immer 0 setzen, ansonsten spawnt mod_fcgid
# PHP_FCGI_CHILDREN * (mal) DefaultMaxClassProcessCount Prozesse
# PHP_FCGI_CHILDREN=0 benoetigt mindestens PHP 5.2,
# falls PHP < 5.2 sehr kleinen Wert benutzen. (zB 1)
PHP_FCGI_CHILDREN=0
export PHP_FCGI_CHILDREN
# IP Adresse, von der connections akzeptiert werden, normalerweise nur localhost
FCGI_WEB_SERVER_ADDRS="127.0.0.1"
export FCGI_WEB_SERVER_ADDRS
# php-bin aufrufen
exec /usr/bin/php5-cgi
-
- Posts: 5923
- Joined: 2004-05-23 12:53
Re: target uid/gid mismatch bei fastcgi
Doch, ist es. Das PHP-Binary sollte normalerweise für Benutzer unveränderbar sein (also z. B. root:root gehören und 0755 als Rechte gesetzt haben). Das "Problem" mit der unpassenden UID/GID umgehst du dann mit dem Shellskript.tenshinhan10 wrote:Das hatte ich durch den Test mit dem Benutzerwechsel des PHP-Binary bereits raus gefunden. Aber ich kann mir nicht vorstellen das dies so gewollt ist.
http://debianhowto.de/doku.php/de:howto ... 2_php-fcgitenshinhan10 wrote:Kannst Du mir dafür bitte ein Muster geben ?
Das kannst du machen, ist aber nicht sonderlich sinnvoll, da ein böser Benutzer dann ein böses Binary installieren kann, das ggf. den Server in die Knie zwingt.tenshinhan10 wrote:Ich hatte schon überlegt ob es eine Möglichkeit gibt einfach die PHP Binary für jeden User zu kopieren und mit den entsprechenden Rechten zu hinterlegen.
-
- Posts: 64
- Joined: 2003-02-25 15:47
Re: target uid/gid mismatch bei fastcgi
Die Art wie dies bei Debinan konfiguriert ist scheint sich doch von Suse zu unterscheiden - die Suse Konfig für mod_fcgi.conf sieht so aus:
Was müßte ich noch eintragen / ändern um so ein Script nutzen zu können ?
Selbst wenn ich das Script wie es ist an die Stelle von /srv/www/cgi-bin/php5. php setze - löst dies doch noch nicht das Problem mehrerer user.
Sorry wenn ich mich da etwas schwerfällig anstelle - es wäre schon wenn Ihr noch einen weiteren Tip geben könnt.
Code: Select all
##
## Associate .fcgi files with mod_fcgid
##
AddHandler fcgid-script .fcgi
##
## PHP via FastCGI
##
## uncomment the following line if you want to handle php via mod_fcgid
##
<FilesMatch ".php$">
AddHandler fcgid-script .php
FCGIWrapper /srv/www/cgi-bin/php5 .php
Options +ExecCGI
</FilesMatch>
##
</IfModule>
# End of <IfModule fcgid_module>
Selbst wenn ich das Script wie es ist an die Stelle von /srv/www/cgi-bin/php5. php setze - löst dies doch noch nicht das Problem mehrerer user.
Sorry wenn ich mich da etwas schwerfällig anstelle - es wäre schon wenn Ihr noch einen weiteren Tip geben könnt.
-
- Posts: 5923
- Joined: 2004-05-23 12:53
Re: target uid/gid mismatch bei fastcgi
Nein, aber mod_fastcgi != mod_fcgid. Das nur mal am Rande...tenshinhan10 wrote:Die Art wie dies bei Debinan konfiguriert ist scheint sich doch von Suse zu unterscheiden
Das Binary in FCGIWrapper muss für jeden Benutzer/VirtualHost gesetzt werden im entsprechenden Abschnitt. Ein Binary für alle geht nicht, außer du verzichtest auf SuExec.tenshinhan10 wrote:Was müßte ich noch eintragen / ändern um so ein Script nutzen zu können ?
-
- Posts: 64
- Joined: 2003-02-25 15:47
Re: target uid/gid mismatch bei fastcgi
Genau das würde ich gern machen. Der Befehl:Das Binary in FCGIWrapper muss für jeden Benutzer/VirtualHost gesetzt werden im entsprechenden Abschnitt.
FCGIWrapper /srv/www/cgi-bin/php5 .php
lässt sich aber scheinbar nicht in den Vhost verwenden. Jedenfalls startet Apache2 nicht und meldet - das dieser Befehl an der falschen Stelle steht.[/code]
-
- Posts: 1031
- Joined: 2002-10-14 22:56
Re: target uid/gid mismatch bei fastcgi
Code: Select all
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName legendz.de
ServerAlias www.legendz.de
DocumentRoot /var/www/vhosts/legendz/home/web
SuexecUserGroup legendz legendz
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/vhosts/legendz/home/web>
Options Indexes FollowSymLinks MultiViews
# Wer htaccess benutzt, sollte hier mindestens AuthConfig setzen
AllowOverride None
Order allow,deny
allow from all
# PHP
AddHandler fcgid-script .php
FCGIWrapper /var/www/php-fcgi-starter/legendz/php-fcgi-legendz .php
Options +ExecCGI
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel debug
CustomLog /var/log/apache2/access.log combined
ServerSignature On
</VirtualHost>
-
- Posts: 64
- Joined: 2003-02-25 15:47
Re: target uid/gid mismatch bei fastcgi
ok ich habs - der Fehler war das ich den FCGIWrapper Befehl außerhalb des Directory Befehls eingetragen hatte.
Besten Dank nochmal!
Besten Dank nochmal!