nachdem mod_fastcgi auf meinem Hightraffic-Server nur Probleme macht, wollte ich mal auf meiner Testmaschine mod_fcgid ausprobieren. Vor allem auch, weil mod_fastcgi aus dem Rep von Gentoo wohl rausfliegen wird.
Ich fahre im Moment folgende Konfiguration:
Code: Select all
$ cat /etc/apache2/modules.d/20_mod_fcgid.conf
<IfDefine FCGID>
<IfModule !mod_fcgid.c>
LoadModule fcgid_module modules/mod_fcgid.so
</IfModule>
<IfModule mod_fcgid.c>
AddHandler fcgid-script .fcg
</IfModule>
</IfDefine>
$ cat /etc/apache2/vhosts.d/01.conf
<VirtualHost *:80>
ServerName xxx
ServerAlias xxx
ServerAdmin xxx
DocumentRoot "/srv/benutzername/html/"
SuexecUserGroup benutzername www-users
ErrorLog /srv/benutzername/logs/error_log
CustomLog /srv/benutzername/logs/access_log combined
</VirtualHost>
<Directory "/srv/benutzername/html/">
AddHandler fcgid-script .php
Options ExecCGI
FCGIWrapper /srv/php-fcgi-scripts/benutzername/php-fcgi-starter .php
AllowOverride AuthConfig FileInfo Indexes Limit Options
Order allow,deny
Allow from all
</Directory>
$ cat /srv/php-fcgi-scripts/benutzername/php-fcgi-starter
#!/bin/sh
PHPRC="/srv/benutzer/conf"
export PHPRC
exec /usr/bin/php-cgi
Packe ich den in den Vhost folgende PHP-Datei:
Code: Select all
<?
echo('<h1>WhoAmI</h1>');
passthru('/usr/bin/whoami');
echo('<h1>ID</h1>');
passthru('/usr/bin/id');
echo('<h1>Shadow</h1>');
$s = implode('',file('/etc/shadow'));
echo $s;
?>
WhoAmI und ID sind sich einig das es sich um den Webbenutzer "benutzer" handelt. TROTZDEM, und das beunruhigt mich, schlägt der Zugriff auf die shadow nicht fehlt (die definitiv 700 als Permissions hat). Außerdem werden alle Dateien die PHP anlegt mit dem Benutzer root und der Gruppe "www-users" erstellt. Genauso laufen die "php-cgi"-Binaries alle als Root und nicht als normaler Webbenutzer. Komischer Fall, vor allem weil eigentlich Suexec sich um das umstellen der Benutzer kümmern sollte und das eigentlich auch tut:
Code: Select all
$ cat /var/log/apache2/suexec_log
[2007-01-09 19:02:42]: uid: (1002/benutzer) gid: (1003/1003) cmd: php-fcgi-starter
[2007-01-09 19:08:16]: uid: (1002/benutzer) gid: (1003/1003) cmd: php-fcgi-starter
Code: Select all
[Tue Jan 09 19:08:13 2007] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec2)
[Tue Jan 09 19:08:13 2007] [notice] Apache configured -- resuming normal operations
[Tue Jan 09 19:08:16 2007] [notice] mod_fcgid: call /srv/benutzer/html/test.php with wrapper /srv/php-fcgi-scripts/benutzer/php-fcgi-starter
[Tue Jan 09 19:08:16 2007] [notice] mod_fcgid: server /srv/benutzer/html/test.php(21546) started
[edit]
Genauso geben die PHP-Funktionen get_current_user und getmyuid die eigentlich richtigen werte (Also den normalen benutzer) zurück, die aber nicht stimmen.
Danke schonmal
TO