Ich möchte, dass Apache "normale" Dateien aus /srv/http/public
und Benutzerdateien aus bereitstellt /srv/http/[user]
, sodass die Verzeichnisse wie folgt aussehen könnten:
/srv/http
/public
index.html - Accessible at localhost/index.html
/austin
index.html - Accessible at localhost/~austin/index.html
Im Moment habe ich die folgenden relevanten Konfigurationen in den Apache- .conf
Dateien
User http
Group http
DocumentRoot "/srv/http/public"
<Directory "/srv/http/public">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
UserDir /srv/http
UserDir disabled root
<Directory "/srv/http">
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
Und die folgenden Berechtigungen in /srv/http
:
drwxr-xr-x root http /srv/http
drwxr-xr-x http http /srv/http/public
-rwxr-xr-x http http /srv/http/public/index.html
drwxr-xr-x austin http /srv/http/austin
-rwxr-xr-x austin http /srv/http/austin/index.html
Mit diesem Setup localhost/index.html
wird die Anzeige einwandfrei angezeigt, es wird jedoch localhost/~austin/index.html
ein403 Zugriff verboten!Fehler, egal was ich versuche.
Bearbeiten:der entsprechende error_log-Eintrag: [error] [client ::1] client denied by server configuration: /srv/http/austin/index.html
Was mache ich falsch?
Oh, und ich glaube nicht, dass es wirklich wichtig ist, aber ich verwende Arch Linux und Apache 2.2.19
Antwort1
Das Problem bestand darin, dass die <Directory>
Richtlinie für die Benutzerverzeichnisse zu restriktiv war.
Durch die Wiederverwendung derselben Anweisungen aus dem /srv/http/public
Verzeichnis kann die Außenwelt alle Benutzerdateien sehen:
<Directory "/srv/http">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>