Vhost unter seperaten UID & GID

#1
Hi,

ich würde es sehr praktisch finden wenn man einen vhost über das Web-Frontend so einstellen könnte das jeder, wenn man es möchte, unter einer seperaten UID& GID läuft. Wenn man nichts einstellt, dann eben der Standard.


Viele Grüße
 
#2
Unter ISP3 wird für jeden Kunden eine eigene GID angelegt.
Jedes Web bekommt dann eine eigene UID in aufsteigender Reihenfolge.
Ist also bereits so.
Wenn du dann für ein Web statt mod_php suPHP auswählst werden die PHP Scripts mit der Berechtigung des Besitzers ausgeführt, also nicht als www-data sondern z.B. als web43.
Hast du danach gesucht?
 
#3
Hi,

genau so soll es. Der Hintergrund war das wenn CMS-System installiert wird, dieses mit einem FTP-Benutzer hochgeladen wird und dann aber vom Apache User nicht zu modifizieren war. Genauso wenn z.B ein Bild hochgeladen wurde, war demnach der Besitzer www-data und nicht der FTP-User. Der FTP-User konnte es nicht löschen.

Ich habe testweise auf suPHP umgestellt, doch dann lief komischerweise das Web garnicht mehr mit PHP. Es gibt:


Gut, dann dachte ich, schaue ich mal wie die VHost Datei eingelegt wird und sehe den Benutzer auskommentiert:

# suphp enabled
<Directory /var/www/clients/client3/web21/web>
suPHP_Engine on
# suPHP_UserGroup web21 client3
Gut, wie soll es auch wenn der Benutzer auskommentiert ist. Änderung vorgenommen und dem Apache nen tritt gegeben, aber dann folgendes:

root@mail:~# /etc/init.d/apache2 force-reload
Syntax error on line 40 of /etc/apache2/sites-enabled/esens-portal.de.vhost:
Invalid command 'suPHP_UserGroup', perhaps misspelled or defined by a module not included in the server configuration
failed!
root@server:~# a2enmod suphp
Module suphp already enabled
root@mail:~#

Also wird denke ich schon seinen Grund haben das der ausgeklammert wird von ISPConfig. Aber so bekomme ich nur den 500 Errorcode,


:confused:

Grüße
 
#4
Hiho,

ja das Tutorial wurde genutzt. Aber danach läuft unter jedem VHost der Apache mit www-data. Ich habs mal mit dem Script auf verschiedenen VHosts probiert:

root@server:~# cat /var/www/xxx.de/web/test.php
<?php
echo system('whoami');
?>

Ausgabe: www-data

Auf welcher Seite des Tutorials wird das denn so eingerichtet? Kann ich doch nicht übersehen haben. Oder auch wo irgendwo unter /etc/apache2 wird definiert das der VHost den Benutzer des Webs nehmen soll?

Jetzt sagte jemand, dann nimm doch einfach suPHP. Wenn ich suPHP aktiviere wird der Benutzer aber ausgeklammert. Wenn ich ihn aktviere schlägt ein force-reload fehl.

Wobei ich glaube es ist besser wenn man nur einen Beitrag nimmt. Vielleicht die beiden einfach zusammenfassen und einen schließen.

http://www.howtoforge.de/forum/showthread.php?p=14474#post14474

Sorry für den Doppelbeitrag. Aber der erste war nicht gleich sichtbar irgendwie und ich dachte, dann mach doch mal nen FR. :D


Grüße
deep
 

Till

Administrator
#6
Aber danach läuft unter jedem VHost der Apache mit www-data. Ich habs mal mit dem Script auf verschiedenen VHosts probiert:
Dann hast Du vergessen suexec zu aktivieren. Die rechte funktionieren bei einem apache setup wie folgt:

mod_php => www-data
fcgi-php ohne suexec => www-data
cgi-php ohne suexec => www-data
suphp => uid und gid des webs
fcgi-php mit suexec => uid und gid des webs
cgi-php mit suexec => uid und gid des webs
 
#7
Hi,

naja doch. Ich habe im ISPConfig unter Sites --> Domain --> Website suPHP aktiviert. Die VHost-Datei wird auch wie folgt richtig angepasst, nur wird der Web-Benutzer auskommentiert:

root@server:~# cat /etc/apache2/sites-available/domain.de.vhost | grep -A 2 suPHP
suPHP_Engine on
# suPHP_UserGroup web21 client3
AddHandler x-httpd-suphp .php .php3 .php4 .php5
suPHP_AddHandler x-httpd-suphp
</Directory>
Es klappt nur leider nicht und der 500er Fehler kommt. Ich habe es mit nur suPHP probiert und dann zusätzlich auch noch suEXEC aktiviert. Wobei es hier erstmal rein um PHP geht. Also wenn ich vor dem User die # weg nehme, klappt der force-reload für den Vhost garnicht wie oben angegeben. :rolleyes:

@Quest

Das ist auch merkwürdig. :confused: Ich bekomme in den Logs nichts, aber auch garnichts eingezeigt wenn ich ein: tail -f [log] mache und mehrere male hintereinander aktuallisiere. Folgende Logs habe ich geprüft:

access.log
other_vhosts_access.log
error.log


GReetz :)
 
#8
Gelöst

Hiho,

Till, Du hattest vollkommen recht und es funktioniert wunderbar. Der Fehler lag bei mir und war folgender.

Die test.php die den aktuellen Benutzers des Web´s nutzen sollte, die habe ich mit root angelegt und dann war er natürlich auch Besitzer der Datei. Nach ändern der Benutzerrechte lief es dann. Den Hinweis darauf habe ich im richtigen Log des Webs gefunden wie Quest vorgeschlagen hatte, wo ich gucken sollte, wo ich dann aber im falschen Log nachgesehen habe. Der Hinweis war:

[Sun Dec 13 01:56:41 2009] [error] [client xxx.xxx.xxx.xxx] Premature end of script headers: test.php
[Sun Dec 13 01:57:00 2009] [error] [client xxx.xxx.xxx.xxx] SoftException in Application.cpp:296: UID of script "/var/www/clients/client3/web21/web/test.php" is smaller than min_uid
[Sun Dec 13 01:57:00 2009] [error] [client xxx.xxx.xxx.xxx] Premature end of script headers: test .php
Viele Grüße und Danke!
~Tim
 

Werbung

Top