权限被拒绝:无法打开密码文件。

我正在使用Apache Red帽子。

我的.htaccess在我的/ var / www / html的权限如下

-rwxr-xr-x. 1 apache apache 127 Dec 18 14:17 .htaccess 

.htaccess里面有下面的数据集

 AuthType Basic AuthName "Restricted Access" AuthUserFile /var/www/html/server-auth/.htpasswd Require user manu 

var / www / html / server-auth / .htpasswd的权限

 -rwxr-xr-x. 1 apache apache 40 Dec 16 19:11 .htpasswd 

当我在浏览器上打开我的网页时,在input用户名和密码后,login提示重新出现。 即使用户名和密码是正确的。

错误日志:

(13)权限被拒绝:无法打开密码文件:/var/www/html/server-auth/.htpasswd

访问/失败,原因:validation用户标识'manu'未configuration

任何帮助!

由于SELinux安全上下文,您遇到了这个问题。

为了克服这个问题,你需要改变目录/文件的selinux标签。

你可以使用ps axZ | grep httpdfindapache进程安全上下文 ps axZ | grep httpd

并检查相同的ls -Z /var/www/html/server-auth/.htpasswd

要调整目录标签,请尝试: chcon命令(就像chown )。 为了使它永久,你可以使用: semanage命令。

详细说明和一个必须阅读这里: https : //wiki.centos.org/HowTos/SELinux

启用S​​ELinux后,Apache将无法读取文件,除非它们与正在运行的进程具有相同types的域。

首先,检查httpd进程的types域。

 ps axZ|grep httpd 

其次,检查.htpasswd文件的types域。

 ls -Z /var/www/html/server-auth/.htpasswd 

使用命令chcon来更改文件的域以匹配httpd进程的域。

例:

 chcon -Rv --type=httpd_sys_content_t /var/www/html/server-auth/.htpasswd 

这将永久性地改变它,但是如果文件系统被“重新标记”,默认的SELinux上下文将被重新应用。 如果用户启动relabel进程,SELinux将从/ etc / selinux / * / contexts / files中读取规则并将规则应用到文件系统。 为了避免改变用chcon修改的文件,你必须使用命令semanage创build一个新的规则。

例:

 semanage fcontext -a -t httpd_sys_content_t /var/www/html/server-auth/.htpasswd 

首先使用chcon ,通过查看/var/log/audit/audit.log中的审计日志来进行testing。 如果您确定应用了正确的SELinux规则,请使用semanage保存更改。

如果您需要回滚您的更改,请使用restorecon命令。 restorecon从/ etc / selinux / * / contexts / files中读取规则并将其应用于文件系统。

例:

 restorecon -v /var/www/html/server-auth/.htpasswd 

在CentOS上阅读更多关于SELinux的信息https://wiki.centos.org/HowTos/SELinux