所以我安装了SVN,并将HTTPD用于远程存储库。一切正常,直到我使用密码文件。这根本行不通。阿帕奇的error_log说
(13) Permission Denied: Could not open password file
,我还将 repo 和 passwd 文件的父文件夹设置为 chown apache 和 chmod 777...
我不知道这如何是一个权限问题了......请帮忙!!
更新
我从中取出了SVN,只是在我的一个域上实现了标准的基本身份验证
<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot "/var/www/www.domain.com/public_www"
<Directory "/var/www/www.domain.com/public_www">
Options -Indexes
Order allow,deny
Allow from all
AllowOverride All
AuthType Basic
AuthName "Basic Authentication"
AuthUserFile /path/to/authfile.htpasswd
Require valid-user
</Directory>
</VirtualHost>
我像这样创建了密码文件
htpasswd -cm /path/to/authfile.htpasswd username
password (and retype)
最后
service httpd restart
你瞧,身份验证提示符像以前一样工作,但用户名和密码没有!这相当令人沮丧,我已经仔细检查了密码文件和父文件夹的所有权限,所有者等,但我仍然得到
(13) Permission Denied: Could not open password file
在阿帕奇的error_log中
如果你使用的是Red Hat Enterprise Linux/Centos/Fedora系统,并且在 apache 拥有的/var/www/html 目录之外创建了 htpasswd 文件,那么你也会遇到 htpasswd 文件的 SELinux 上下文/标签的问题。您可以使用传递给 ls 命令的 -Z 选项来检查 htpasswd 的当前上下文/标签。
ls -Z
htpasswd 文件应具有httpd_sys_content_t类型。您可以使用以下命令更改此设置:
chcon -t httpd_sys_content_t htpasswd
有关 SELinux 重新标记文件的更多信息:
https://wiki.centos.org/HowTos/SELinux#head-0f6390ddacfab39ee973ed8018a32212c2a02199
也许有点明显的耳光打在我的脸上:
我之前一直在将/path/to/authfile.htpasswd 放在 apaches 主文件夹/var/www 的一侧,当我将密码文件放在/var/www/svn-auth/*.htpasswd 中时,它比它工作。
无论 chown(apache 拥有/svn-auth 和 .htpasswd 文件)它都可能被拒绝,因为 apache(作为用户)的主文件夹很可能是/var/www/* 并且被拒绝访问它之外......
吸取的教训