【问题标题】:You don't have permission error in Apache in CentOS您在 CentOS 中的 Apache 中没有权限错误
【发布时间】:2013-01-03 20:50:29
【问题描述】:

我在 centos 6 中安装了 apache 2.2。当 apache 文件夹位于其默认位置 /var/www/html 时,一切正常。然后我在我的用户主文件夹中配置了一个虚拟主机。之后,当我尝试从浏览器转到 localhost127.0.0.1 时,apache 开始显示 Forbidden You don't have permission error

这是我在 httpd.conf 中使用的代码

<VirtualHost *:80>
        DocumentRoot "/home/anjan/workspace/mfs"
        ServerName anjan-centOS
        <Directory "/home/anjan/workspace/mfs">
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order Deny,Allow
                Allow from all
        </Directory>
</VirtualHost>

我也禁用了SElinux,正如某些文章中提到的那样,但徒劳无功。如果有人可以帮助我,将不胜感激。

【问题讨论】:

  • 这看起来像是一个基本的权限问题,而不是 Apache 的问题。 Apache 以什么用户身份运行?该用户是否有权访问/home/anjan/workspace/mfs
  • 检查apache是​​否可以读取目录的好方法是sudo -u apache ls /home/anjan/worskapce/mfs
  • @CoreyHenderson 我已将每个文件和文件夹的文件权限更改为-rw-rw-rw-,但仍然没有运气。任何想法为什么?

标签: linux apache centos chmod document-root


【解决方案1】:

我解决了这个问题。在干预了系统的权限后,我发现/home/anjan 的所有者user "anjan"/home/anjan 具有读/写/执行权限,但是在创建user "anjan" 时创建的group "anjan" 没有有任何许可。

ls -l /home/

显示

drwx------. 28 anjan anjan 4096 Jan 21 13:19 anjan

所以我用这个命令改变了权限

chmod -R 770 /home/anjan
ls -l /home/
drwxrwx---. 28 anjan anjan 4096 Jan 21 13:19 anjan

我发现我的 apache 在 this 线程中运行在哪个用户下。它在user "apache"下运行

所以我使用此命令将user "apache" 添加到group "anjan"

usermod -G anjan,apache apache

在那之后瞧。不再出现禁止错误。

附:我以 root 用户身份完成了所有操作。

更新 似乎提供的链接现在已损坏。 Heres另一个。

为了安全起见(避免将来断开链接),将命令复制到此处。在终端类型中 -

ps axo user,group,comm | grep apache

【讨论】:

  • 完全为 RHEL 工作!这是缺失的环节。谢谢!
【解决方案2】:

这是(至少对我而言)一个值得怀疑的设计。这基本上意味着 Apache 用户拥有对该用户所有文件的 WRITE 访问权限,包括秘密,例如 ssh-keys。

如果破解者攻击 apache 就不好玩了。

一个简单的修改是在运行为“anjan”时:

chmod -R g-rwx ~ # undo the unsafe -R first
chmod g+rx ~ ~/workspace
chmod -R g+rx ~/workspace/mfs

如果apache 是“anjan”组的成员。

如果文件系统支持,我的建议是使用 ACL:s。

SELinux 现在运行了吗?应该是这样,如果 SELinux 策略仍然阻止 apache 访问 workspace/mfs 的情况仍然如此,来自 sealert 的一些消息应该在 var/log/messages 中很明显。 这个问题通常可以通过明智地使用 setsebol 来解决。

禁用 SELinux,因为某些东西不起作用,建议使用 njaa....

最初的问题是 apache 自己运行,因此在计算权限时被归为其他类别。

chmod o+rx ~anjan/ ~anjan/workspace/ ~anjan/workspace/mfs

应该够了。

CentOS 6 是 RedHat Enterprise Linux 的免费(如免费啤酒)版本,因此 RedHat 的文档 https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Managing_Confined_Services/ 是必需的。

【讨论】:

  • 您提出了一个有效的观点。但就我而言,我正在建立一个开发环境,这就是我将代码放在用户主目录中的原因。但是对于生产,我认为将代码放在任何用户主目录中也不是一个好主意。
猜你喜欢
  • 1970-01-01
  • 2018-04-01
  • 2011-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-09
  • 2012-07-21
相关资源
最近更新 更多