Apache目录与authentication

这是我的虚拟主机configuration:

<VirtualHost *:80> DocumentRoot /home/user1/htdocs/folder1 ServerName folder1.hostname.tld <Directory /home/user1/htdocs/folder1> AuthType Digest AuthName "private" AuthUserFile /home/user1/passwd Require user superman #Order allow,deny #Allow from all </Directory> </VirtualHost> 

我已经添加了用户:

 htdigest -c /home/user1/passwd private superman 

Apache不断给我的日志:

 client denied by server configuration: /home/user1/htdocs/folder1/ 

我不知道什么是错的… Apache有权读取密码文件。 另外,如果我评论AuthDigest …行并取消订阅和允许,apache将像魅力一样提供文件夹。 Apache用403响应我,不提示我的浏览器用户/传递..

任何帮助?

看看Apache的Satisfyconfiguration指令。

默认情况下,它被设置为all (而不是any ),这意味着AllowRequire指令都必须满足。 通过评论“ Allow ,不pipeauthentication如何,您都拒绝访问所有人。

启用“ Allow将不会绕过已知主机的身份validation,并将执行您所需的操作。 或者,您也可以设置为“ Satisfy any ,并将“ Allow from all注释掉。 然后,您可以使用“ Allow来指定可绕过validation的主机。

在我的CentOS服务器上,当我将密码保护的文件夹移到用户目录时,我能够复制你的问题。 如果受保护的文件夹位于默认位置(作为/ var / www / html中的子文件夹),则没有问题。 但是,如果密码保护的文件夹位于用户的主目录内,则Apache出错。

如果您运行的是Linux的Red Hat衍生产品(例如Red Hat Enterprise Linux,CentOS或Fedora Core),看起来SELinux可能是导致此问题的原因。 要testing这个,运行以下命令临时禁用SELinux:

 echo 0 > /selinux/enforce 

然后尝试访问网页。 对我来说,解决了这个问题,Apache能够正确地提示我的用户名和密码,然后访问网站。 要继续并修改SELinux,可以使用chcon命令更改文件或目录的SELinux安全上下文。

 chcon -Rv --type=httpd_sys_content_t /home/user1/ 

有关如何使用chcon进行此更改的更多信息和详细信息,请查看CentOS Wiki中标有“5.1重新标记文件”的部分。