CentOS Subversion,基本身份验证密码文件不起作用



所以我安装了SVN,并将HTTPD用于远程存储库。一切正常,直到我使用密码文件。这根本行不通。阿帕奇的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

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

(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/* 并且被拒绝访问它之外......

吸取的教训

最新更新