3

所以我安装了 SVN 并将 HTTPD 用于远程存储库。一切正常,直到我使用密码文件。这根本行不通。Apache 的 error_log 说

(13) Permission Denied: Could not open password file

我已将 passwd 文件的 chmod 设置为 777 并将 chown 设置为 apache,我还将 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

瞧,auth 提示符像以前一样工作,但用户名和密码却没有!这很令人沮丧,我已经仔细检查了密码文件和父文件夹的所有权限、所有者等,但我仍然得到

(13) Permission Denied: Could not open password file

在 Apache 的 error_log 中

4

2 回答 2

8

如果您使用的是 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

于 2013-05-09T20:28:45.877 回答
2

也许在我脸上有点明显的耳光:

当我将密码文件放在 /var/www/svn-auth/*.htpasswd 中时,我之前一直将 /path/to/authfile.htpasswd 放在 apache 的主文件夹 /var/www 之外。

无论 chown (apache 拥有 /svn-auth 和 .htpasswd 文件),它都可能被拒绝,因为 apache(作为用户)的主文件夹很可能是 /var/www/* 并且被拒绝访问它之外.. .

学过的知识

于 2012-11-21T22:41:31.150 回答