在RedhatAS4中默认Apache遇到的问题

今天调试hanban北京的服务器,偷了点懒让远程的工程师装了一个完整的AS4,把需要的apache、php、mysql默认情况下都安装了,当我把web的php教本远程传上去,httpd.conf设定完成之后,访问却发生403 Forbidden禁止访问错误,百思不得其解。

系统默认的Document Root是/var/www/html,把网站的php教本copy到这个目录后发现403禁止访问。改变Document Root目录和新建alias目录,或者虚拟主机错误依旧。

感觉还是文件权限问题,但是把文件权限设定到777仍然错误依旧。

google了一下,发现问题。AS4默认安装的时候可能激活了SELinux选项,SELinux比普通的Linux内核提供了更高的安全性,理论上说,在系统因为未知漏洞溢出的时候,普通用户是不可能得到超级用户的权限了。但是,就是因为SELinux安全性的提高,导致我们在使用时,会发生一些我们以前从没遇到的问题。

检查 avc message,查看 /var/log/messages文件,发现有类似以下内容的这样一段:
Dec 24 17:54:59 hostname kernel: audit(1098222899.827:0): avc: \
denied { getattr } for pid=19029 exe=/usr/sbin/httpd \
path=/var/www/html/about.html dev=dm-0 ino=373900 \
scontext=root:system_r:httpd_t tcontext=user_u:object_r:user_home_t \
tclass=file

问题找到了,果然是SELinux的新特性搞的鬼。我把目录或文件设成了user_home_t类型,因此apache的进程没有权限,无法访问。针对Apache的进程所使用的SELinux target policy规定了apache的进程只能访问httpd_sys_content_t类型的目录或文件。
解决办法:很简单,把目录或文件的策略类型改成 httpd_sys_content_t 就可以了。

使用root用户
# chcon -t httpd_sys_content_t 目录名或文件名

可以用 ls -laZ 命令查看文件目录的策略类型。

做了修改之后就可以正常访问了,晕呼呼,这个事情耽误了hanban网站开通2个小时的时间,本来下午2点钟要给hanban搞好的,拖到了4点钟,把北京那边害得不浅。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇