我正在使用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
启用SELinux后,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 。