Apache Mod Userdir
Tom
- webserver
0 Andreas Görtz0 Tom0 Andreas Görtz0 Tom
Hello,
kennt sich hier einer mit dem Apache Mod Userdir aus und was passiert, wenn es den User nicht gibt, der z.B im Request
http://example.org/~user/irgend_eine_ressource.html
genannt wird?
Es gibt dafür ein Verzeichnis in der Document Root, das "~user" heißt und die Ressource enthält.
Normalerweise wird diese Anfrage intern weitergeleitet auf
/home/user/public_html/irgend_eine_ressource.html
weil dies in mod_userdir.conf so festgelegt ist.
------
<IfModule mod_userdir.c>
# Note that the name of the user directory ("public_html") cannot easily be
# changed here, since it is a compile time setting. The apache package
# would have to be rebuilt. You could work around by deleting
# /usr/sbin/suexec, but then all scripts from the directories would be
# executed with the UID of the webserver.
#
# To rebuild apache with another setting you need to change the
# %userdir define in the spec file.
# not every user's directory should be visible:
UserDir disabled root
# to enable UserDir only for a certain set of users, use this instead:
#UserDir disabled
#UserDir enabled user1 user2
# the UserDir directive is actually used inside the virtual hosts, to
# have more control
#UserDir public_html
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
</IfModule>
--------
Wie kann man realisieren, ob der Zugriff überhaupt stattfindet und wo er landet. Der Host ist leider "automatisiert" umgezogen worden...
Leider landen noch alle Access-Log-Einträge aller vHosts in dem einen einzigen Access-File, wodurch ich nicht sehen kann, welcher Zugriff überhaupt für welche Domain ist.
Widersprechen sich die beiden Limits nicht auch?
Ich ahbe jetzt noch
Liebe Grüße
Tom
Hi Tom,
[...]und was passiert, wenn es den User nicht gibt, der z.B im Request
http://example.org/~user/irgend_eine_ressource.html
genannt wird?
da passiert durch mod_userdir wegen der Pfadangabe »/home/*/public_html« im <Directory>-Abschnitt überhaupt nichts, denn diese berücksichtigt ja lediglich alle Verzeichnisse, die unterhalb von /home/ existieren.
Wie kann man realisieren, ob der Zugriff überhaupt stattfindet und wo er landet. Der Host ist leider "automatisiert" umgezogen worden...
Wenn der Zugriff fehlgeschlagen ist, sollte im ErrorLog was zu finden sein. Darüber hinaus: was bedeutet "automatisiert umgezogen"? Und warum "leider"?
Widersprechen sich die beiden Limits nicht auch?
es sind nicht zwei Limits, sondern ein <Limit>- und ein <LimitExcept>-Abschnitt.
Ich ahbe jetzt noch
.oO(fehlt da nicht was? (-;)
Gruß,
Andreas.
Hello,
http://example.org/~user/irgend_eine_ressource.html
da passiert durch mod_userdir wegen der Pfadangabe »/home/*/public_html« im <Directory>-Abschnitt überhaupt nichts, denn diese berücksichtigt ja lediglich alle Verzeichnisse, die unterhalb von /home/ existieren.
Die Frage lautete, was passiert mit dem Request überhaupt?
Ich hatte mir vorgestellt, dass das geladene mod_userdir dafür verantwortlich ist, dass das "getildete" Verzeichnis überhaupt auf das Home-Dir abgebildet wird.
Wenn nun dort am vorgegebenen Ort kein Verzeichnis /home/*/public_html/ gefunden wird, wird versucht, die Ressource im Verzeichnis /<document_root>/~user/ zu finden. So war es zumindest auf allen Servern, zu deren Konfiguration ich bisher Zugriff hatte.
Nun war ein weiterer Gedanken, warum es denn so war, bzw. warum es bei diesem Server nicht so ist. Zufall? Irgendeine Einstellung vergessen oder übersehen? Versionssache?
Hier ist es ja auch so, dass das Verzeichnis publöic_html angeblich fest eincompiliert ist. Das war, soweit ich mich erinnere, auf meinem eigenen Testserver NICHT so. Da habe ich diese Verzeichnisse nämlich teilweise in "www" umbenannt, ohne Probleme. Leider kann ich da im Moment nicht nachgucken.
Der Rest vom Satz sollte bestimnt heißen, dass ich gleich aufhören musste, mir Gedanken über Server zu machen und wieder an meiner Gesundheit arbeiten musste...
Liebe Grüße
Tom vom Berg
Hi Tom,
sorry, da habe ich dich missverstanden.
Wenn nun dort am vorgegebenen Ort kein Verzeichnis /home/*/public_html/ gefunden wird, wird versucht, die Ressource im Verzeichnis /<document_root>/~user/ zu finden. So war es zumindest auf allen Servern, zu deren Konfiguration ich bisher Zugriff hatte.
es kommt darauf an, welcher Wert der UserDir-Direktive gegeben wurde. Wird ihr ein absolutes Verzeichnis mitgegeben, erkennbar am führenden Slash, also z.B.
UserDir /foo
dann würde eine Anfrage für http://example.com/~bar/baz.html auf /foo/bar/baz.html verweisen. Existiert das Verzeichnis nicht, liefert der Apache einen 404. Mit der Angabe
UserDir foo
dagegen wird zuerst in der /etc/passwd nach dem Home-Verzeichnis des Benutzers "bar" gesucht und im Erfolg auf die Datei ~bar/foo/baz.html verwiesen, also /home/bar/foo/baz.html, falls /home/bar das Home-Verzeichnis von bar ist. Falls der Benutzer nicht existiert, bleibt der Request von mod_userdir unverändert und wird wie jeder andere behandelt, i.d.R. also auf /~bar/baz.html unterhalb des DocumentRoot von example.com verweisen.
Hier ist es ja auch so, dass das Verzeichnis publöic_html angeblich fest eincompiliert ist. Das war, soweit ich mich erinnere, auf meinem eigenen Testserver NICHT so. Da habe ich diese Verzeichnisse nämlich teilweise in "www" umbenannt, ohne Probleme. Leider kann ich da im Moment nicht nachgucken.
hiermit ist nicht mod_userdir gemeint, sondern suEXEC. Dem ist nämlich der Name des Verzeichnisses, in dem Scripte ausgeführt werden dürfen, fest einkompiliert. Würde man nun den Namen des Verzeichnisses von mod_userdir ändern, würde von suEXEC das Ausführen von Scripten in diesem Verzeichnis verboten.
Der Rest vom Satz sollte bestimnt heißen, dass ich gleich aufhören musste, mir Gedanken über Server zu machen und wieder an meiner Gesundheit arbeiten musste...
dabei wünsche ich dir viel Erfolg!
Gruß,
Andreas.
Hello,
Hier ist es ja auch so, dass das Verzeichnis publöic_html angeblich fest eincompiliert ist. Das war, soweit ich mich erinnere, auf meinem eigenen Testserver NICHT so. Da habe ich diese Verzeichnisse nämlich teilweise in "www" umbenannt, ohne Probleme. Leider kann ich da im Moment nicht nachgucken.
hiermit ist nicht mod_userdir gemeint, sondern suEXEC. Dem ist nämlich der Name des Verzeichnisses, in dem Scripte ausgeführt werden dürfen, fest einkompiliert. Würde man nun den Namen des Verzeichnisses von mod_userdir ändern, würde von suEXEC das Ausführen von Scripten in diesem Verzeichnis verboten.
Danke, das erklärt die Unrterschiede.
Ich habe in den gesagten Fällen bisher PHP immer nur als Modul benutzt.
Liebe Grüße
Tom vom Berg