UserDir Forbidden /~user

Hallo liebe Wissenden.
Ich habe ein massives Problem mit Apache unter Linux.
Ich möchte gerne, dass einzelne User persönliche Webseiten in ihrem Homeverzeichnis unter public_html ablegen können. Die, meines Wissens nach, nötigen Einstellungen in der httpd.conf habe ich vorgenommen. Das Modul UserDir wird auch geladen. Aber immer wenn ich auf eine spezielle Userwebsite zugreifen möchte bekomme ich nur ein Forbidden. Das Problem ist, dass ich den Pfad zum UserDir mit 777 mehr als offen habe, also könnte es daran schon mal nicht liegen. Daher poste ich im Folgenden den, hoffentlich relevanten, Auszug aus der httpd.conf:

UserDir is disabled by default since it can confirm the presence

of a username on the system (depending on home directory

permissions).

#UserDir disable

To enable requests to /~user/ to serve the user’s public_html

directory, remove the „UserDir disable“ line above, and uncomment

the following line instead:

UserDir public_html

Control access to UserDir directories. The following is an example

for a site where these directories are restricted to read-only.

AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

Order allow,deny
Allow from all

Order deny,allow
Deny from all

Options Indexes FollowSymLinks

Da ich nur die Configdatei httpd.conf habe, nehme ich an, dass der Apache definitiv nicht Version 2 sein sollte. Er wurde zusammen mit Red Hat Enterprise Linux 4 erstellt.

Ich hoffe, dass mir hier geholfen werden kann. Denn ich bin wirklich mit dem Latein am Ende. Ich freue mich auf eure Antworten.

MfG
Nils

Hallo,

Aber immer wenn ich auf eine spezielle Userwebsite zugreifen
möchte bekomme ich nur ein Forbidden.

Was genau steht in der error.log?

Das Problem ist, dass
ich den Pfad zum UserDir mit 777 mehr als offen habe, also
könnte es daran schon mal nicht liegen.

Wenn dein userdir /home/foo/public_html/ ist, muessen /home, /home/foo und /home/foo/public_html/ die r und x flags fuer den Apache-User (oder fuer „other“) gesetzt haben.

BTW 777 ist immer eine schlechte Idee, der Apache braucht keine Schreibrechte (hoechstens vielleicht CGI-Programme). 755 sollte schon klappen.

Solltest du Selinux einsetzen nutzen dir alle permissions nicht, dann musst du den security context der Verzeichnisse noch anpassen.

Gruesse,
Moritz

Deine Konfiguration sieht eigentlich ganz gut aus, kann ich also nicht so viel zu sagen.

Aber was die berechtigungen angeht, reicht es, wenn du auf das Home-Verzeichnis 701 und auf das public_html 705 setzt.

Grüße,
Nik

Das Problem ist, dass
ich den Pfad zum UserDir mit 777 mehr als offen habe, also
könnte es daran schon mal nicht liegen.

Wenn dein userdir /home/foo/public_html/ ist, muessen /home,
/home/foo und /home/foo/public_html/ die r und x flags fuer
den Apache-User (oder fuer „other“) gesetzt haben.

Oh, da haben wir über Kreuz gepostet :wink: … Read brauchst du noch nicht mal, auf alle Verzeichnisse über public_html reicht x (Apache muss nur in das Verzeichnis wechseln, nicht auflisten).

Grüße,
Nik

Was genau steht in der error.log?

Im error.log steht folgendes:

[Tue Jul 08 15:06:07 2008] [error] [client 192.168.0.10] (13)Permission denied:
access to /~user1/ denied

Wenn dein userdir /home/foo/public_html/ ist, muessen /home,
/home/foo und /home/foo/public_html/ die r und x flags fuer
den Apache-User (oder fuer „other“) gesetzt haben.

Das hab ich bisher noch nicht kapiert. Hat das was zu tun wer owner der Datei, bzw. des Ordners ist?

BTW 777 ist immer eine schlechte Idee, der Apache braucht
keine Schreibrechte (hoechstens vielleicht CGI-Programme). 755
sollte schon klappen.

Das 777 nicht grad wirklich gut ist, ist mir klar. Ist ja auch nur erstmal zum Testen. Zumal das System sowieso in einem eigenen, getrennten netzt in einer ESX-Umgebung läuft.

Solltest du Selinux einsetzen nutzen dir alle permissions
nicht, dann musst du den security context der Verzeichnisse
noch anpassen.

Das habe ich gar nicht erst installiert.

Hallo Nils.

Was genau steht in der error.log?

Im error.log steht folgendes:

[Tue Jul 08 15:06:07 2008] [error] [client 192.168.0.10]
(13)Permission denied:
access to /~user1/ denied

Dann überprüfe mal die Rechte des übergeordneten Verzeichnisses, also von /home/user1
Das müssen andere ja auch lesen und betreten können, also mal auf 717 setzen.

Viele Grüße
Marvin

Hallo Marvin

Dann überprüfe mal die Rechte des übergeordneten
Verzeichnisses, also von /home/user1
Das müssen andere ja auch lesen und betreten können, also mal
auf 717 setzen.

Also die Rechte sind folgendermaßen gesetzt:

  • /home = 755
  • /home/user1 = 717
  • /home/user1/public_html = 755

Leider klappt der Zugriff immer noch nicht :frowning:

Hallo Nils,

Also die Rechte sind folgendermaßen gesetzt:

  • /home = 755
  • /home/user1 = 717
  • /home/user1/public_html = 755
    Leider klappt der Zugriff immer noch nicht :frowning:

Auch nicht nach „Aktuelle Seite neu laden“? Wegen dem Cache, vergisst man ja manchmal…
Im Moment weiss ich nicht weiter, die Rechte stimmen, deine httpd.conf sieht aus wie meine, bis auf die Ausnahme, daß mein IfModule erst hinter dem Directory-Block geschlossen wird, aber das kann es ja wohl nicht sein:

 UserDir public\_html

#
# Control access to UserDir directories. The following is an example
# for a site where these directories are restricted to read-only.
#

 AllowOverride FileInfo AuthConfig Limit
 Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

 Order allow,deny
 Allow from all

 Order deny,allow
 Deny from all

Bist Du sicher, daß Du SELinux nicht benutzt? In Kernel 2.6.x ist es ja explizit drin und gerade bei Red Hat Enterprise Linux 4 würde ich vermuten, daß es dort standardmäßig on ist, da ja Red Hat die Hauptakteure von SELinux sind. Ist doch richtig, daß Du mit RH Enterprise 4 arbeitest?

Viele Grüße
Marvin

Hallo Marvin

Auch nicht nach „Aktuelle Seite neu laden“? Wegen dem Cache,
vergisst man ja manchmal…

Ich hab eben nochmal den Cache gelöscht. Leider ohne Wirkung.

IfModule erst hinter dem Directory-Block geschlossen wird,
aber das kann es ja wohl nicht sein:

Hmm vielleicht versuch ich es so nochmal. Aber im Moment hab ich da keine Zeit, da ich schon wieder eine andere Aufgabe bekommen habe.

Bist Du sicher, daß Du SELinux nicht benutzt? In Kernel 2.6.x
ist es ja explizit drin und gerade bei Red Hat Enterprise
Linux 4 würde ich vermuten, daß es dort standardmäßig on ist,
da ja Red Hat die Hauptakteure von SELinux sind. Ist doch
richtig, daß Du mit RH Enterprise 4 arbeitest?

Da bin ich mir ziemlich sicher, dass das ausgeschaltet ist, bzw. bei der Neuinstallation hab ich das gar nicht mehr mit installiert.
Jab das ist richtig, dass hier im Moment RHEL4 nutze.

Gruß
Nils

Hallo,
so das Problem ist gelöst und die UserDirs laufen.

Bist Du sicher, daß Du SELinux nicht benutzt?

Da waren wir uns ziemlich Sicher, Marvin.
Da ich noch Azubi bin und mein Kollege die Paketauswahl für die Installation gemacht hat, hatte er gleich gesagt, dass er SELinux nicht mit Installiert, da es sonst wegen des Indianers zu Problemen kommen kann.
Keine Ahnung warum es doch installiert wurde. Vielleicht irgend welche Abhängigkeiten, oder ähnliches?

Nun ist SELinux aber aus und der Apache rennt.

Also danke für deine, respektive eure Unterstützung.

Bis zur nächsten Frage.

LG
Nils