Gerade bin ich wieder in einen beliebten Fehler gelaufen: Wenn ein anderer User (z.B. „apache“) auf eine Datei zugreifen will, dann müssen alle Verzeichnisse im gesamten Pfad das +x Recht besitzen.
Hat man also beispielsweise die Datei /home/$user/html/$foo/.htaccess, in der folgendes steht:
AuthName "Speak, friend, and enter." AuthType Basic #funktioniert nicht: #AuthUserFile /home/$user/html/$foo/.htpasswd #funktioniert: AuthUserFile /var/www/virtual/$user/html/$foo/.htpasswd require valid-user
während /home/$user/html ein Symlink auf /var/www/virtual/$user/html ist, kann apache unter Umständen nicht auf die .htpasswd zugreifen.
Der Umstand, unter dem das nicht funktioniert, ist, dass apache nicht auf /home/$user zugreifen kann, weil die Rechte entsprechend restriktiv gesetzt sind. Für /var/www/virtual/$user sind jedoch die Rechte so gesetzt, dass dies funktioniert.
Unter http://unix.stackexchange.com/questions/5860/how-do-i-recursively-check-permissions-in-reverse werden Tools diskutiert, mit denen rekursiv die Berechtigung der übergeordneten Verzeichnisse geprüft werden kann.
Kurzum: Die Rechte der übergeordneten Verzeichnisse überprüfen. :)