web*_*der 3 apache permissions .htaccess denied srv
我在Centos 6.5上遇到了问题:
[2012年12月28日12:10:52] [a] [客户端127.0.0.1](13)权限被拒绝:/srv/www/website/.htaccess pcfg_openfile:无法检查htaccess文件,确保它是可读的
基本上,我正在构建一个全新的服务器,并试图将我的所有网站迁移到/ srv/www文件夹而不是/ var/www,因为它似乎是未来的标准(有关它的整个讨论,所以只是谷歌) .
我做了什么:
1)添加了一个新组(groupadd开发人员)
2)添加用户a(gid 501),root,apache,nobody到上面的组(usermod -G开发者和&& usermod -G开发者apache && usermod -G开发者root && usermod -G开发者没人)
3)将所有文件夹和文件复制到/ srv/www
4)将整个/ srv/www的所有权更改为apache:开发人员(chown -R apache:developers/srv/www)
5)更改模式,因此/ srv/www是组可读/可写/可搜索的(chmod -R 2775/srv/www)
6)将'umask 002'添加到/ etc/sysconfig/httpd的末尾,使其以组可写模式运行
7)添加虚拟主机和/etc/httpd/conf.d/vhosts.conf(服务httpd configtest抛出OK)
NameVirtualHost *:80
NameVirtualHost *:443
SSLStrictSNIVHostCheck off
<VirtualHost *:443>
ServerAdmin webmaster@domain.ext
DocumentRoot /srv/www/test
ServerName test.domain.com
ServerAlias test.domain
SSLEngine on
SSLCertificateFile /etc/httpd/certs/domain.com/server.crt
SSLCertificateKeyFile /etc/httpd/certs/domain.com/server.key
<Directory /srv/www/test>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
8)重新启动服务器9)手动启动httpd,因为它要求SSL证书密码,否则自动启动失败(重新启动后需要查看如何自动启动)
我仍然得到相同的上述错误消息.
然后,我尝试将/ etc/passwd中的主文件夹更改为/ srv/www(服务器重启)的apache用户,但仍然没有快乐,即权限被拒绝.我甚至重命名了旧的/ var/www文件夹,并在/ var/www中创建了一个符号链接到/ srv/www.另一个尝试是重新回到root:root,apache:apache和:两者的开发人员组.
/ srv/www/[不工作]
drwxr-XR-X.2根root(cgi-bin,错误,html,图标)
drwxrwsr-X.5个apache开发人员(所有其他网站文件夹)
-rwxrwsr-X.1个apache开发人员(所有文件)
/ SRV /
drwxrwsr-X.4个apache开发者www
/ var/www [工作]
drwxr-XR-X.2根root(cgi-bin,错误,html,图标)
drwxrwxr-X.3个apache开发人员(所有其他网站文件夹)
-rwxrwxr-X.1个apache开发人员(所有网站文件)
然后,只要我将我的网站文件夹中的一个复制到/ var/www并在/etc/httpd/conf.d/vhosts.conf中指向路径,它就会开始正常工作!
是否有人知道为什么它不工作/ SRV/WWW文件夹?
我终于找到了问题的根源.这是由SELinux策略覆盖基本的传统自主访问控制(DAC)方法引起的,例如通常用于控制用户文件访问的文件权限或访问控制列表(ACL)!
$ sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
$ setenforce
usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
$ setenforce Permissive
$ sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
Run Code Online (Sandbox Code Playgroud)
有关SELinux在Centos的更多信息.一旦我切换到Permissive模式,我/ srv /就开始工作了.
如果您知道这样做以及为什么这样做,那么您可以通过更改以下行来永久禁用/ etc/selinux/config中的SELinux:
SELINUX=enforcing
Run Code Online (Sandbox Code Playgroud)
至
SELINUX=disabled
Run Code Online (Sandbox Code Playgroud)
重新启动服务器,您应该永久禁用它.
注意:从"禁用"切换到"允许"或"强制"模式时,强烈建议重新启动系统并重新标记文件系统.
| 归档时间: |
|
| 查看次数: |
5289 次 |
| 最近记录: |