SELinux中的Apache和MySQL设定
来源:asp之家 发布时间:2010-05-09 17:54:00
Fedora Core 3 在安装时默认把SELinux的选项激活了。SELinux比普通的Linux内核提供了更高的安全性,理论上说,在系统因为未知漏洞溢出的时候,普通用户是不可能得到超级用户的权限了。但是,就是因为SELinux安全性的提高,导致我们在使用时,会发生一些我们以前从没遇到的问题。
前两天我在使用Fedora Core 3搭建PHP+MySQL的WebServer时就遇到了一些问题。现在整理一下,如果您也遇到同样的问题,那么,看过这篇文章,就应该可以轻而易举的解决了。
1. Apache - Document root must be a directory 问题。
有可能和这个问题并发的问题还有 403 Forbidden 禁止访问的问题。
现象描述:
不使用系统默认的 /var/www/html作为系统的Document Root,自己新建一个目录后修改 /etc/httpd/conf/httpd.conf 中的配置,然后重起Apache的Daemon,发现Apache无法起动,系统报错:
Document root must be a directory
但是,我们设置的DocumentRoot 的确是一个目录,而且apache用户具有可读权限。
另一种情况:新建一个虚拟目录或文件后,无法访问,显示 Forbidden, 403 Error,但文件或目录有可读权限。
问题产生的原因:
一开始我想来想去想不出为什么,但是给我感觉是权限的问题,用传统的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_ubject_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 命令查看文件目录的策略类型
2. Mysql - Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)
刚搞定Apache,mySQL又出问题了。
问题现象:
本机用mysql命令可以正常登录数据库并正常操作。但是在php写的页面中,不管怎样,连接mySQL数据库时,都会报如下错误:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)
问题原因:
查看mysql.sock文件,存在并且任何人都可读可写。发现avc message (/var/log/messages)中同样有策略错误的记录。
用 ps -efZ|grep mysql 命令检查mysql的进程,发现mySQL使用了unconfined_t 这个未定义策略类型在运行,而mysql.sock以及mysqld文件的策略类型都是var_lib_t。很明显,这应该是个Fedora Core 3 的 BUG,SELinux target policy的BUG,redhat并没有为mySQL制定正确的target policy。
解决办法:
到redhat的bugzilla系统上搜索,果然找到了这个BUG。
Bug #: 138421
https://bugzilla.redhat.com/bugzill...g.cgi?id=138421
在这个页面找到新的target policy的补丁安装即可
补丁下载页面:
ftp://people.redhat.com/dwalsh/SELinux/FC3
你也可以从本文的附件中下载
只要下载
selinux-policy-targeted-1.17.30-2.23以上的版本就能正常使用mySQL了。
如果你原来的系统安装了 selinux-policy-targeted-source (源代码),那么你也必需下载source的rpm文件,并首先升级这个包,因为两个包有依赖关系。
补丁安装办法:
使用root用户。
先升级新的target-policy-source (如果你之前安装了这个包的话)
# rpm -Uvh selinux-policy-targeted-sources-1.17.30-2.61.noarch.rpm
升级新的target-policy
# rpm -Uvh selinux-policy-targeted-1.17.30-2.61.noarch.rpm
更新mysql相关的target policy
# rpm -q -l mysql-server | restorecon -R -v -f -
# rpm -q -l mysql | restorecon -R -v -f -
重起mysql的服务
# service mysqld restart
试一下吧,一定有效
猜你喜欢
- 在前面的讲解(//www.jb51.net/article/97357.htm)中,我们已经在VMware虚拟机管理软件中,创建了一台虚拟的
- 越来越多的网站和博客开始投放Google AdSense广告,随之而来的是每个发布者的喜悦和烦恼。“今天的广告费又多了”,“单价竟然上涨了0
- 在上一篇的确保Linux VPS及服务器更加安全之Xshell设置密钥登录文章中已经分享到XSHELL使用密钥登陆我们的VPS服务器确保机器
- 作为草根的我们,在辛辛苦苦连续奋战几天几夜或更长时间后,自己的网站终于诞生了。他就像自己孩子一样,用自己全部的爱呵护着,培养他长成苍天大树。
- 01. VMware Workstation Pro15下载下载:VMware Workstation Pro15下载破解版下载:https
- Linux的screen命令不错,习惯了你会觉得它比windows的任务栏好用多了。下面是我的.screenrc,仅供参考Linux的scr
- 随着Exchange Server 2007(之前也称其为“Exchange 12”)的即将发布,其所蕴涵的强大功能也开始逐渐展现开来。作为
- 赈灾捐助汶川灾区第四日。截至16日下午16时45分,已有112家IT及高科技企业响应绿色选择联盟企业号召,纷纷通过中国红十字总会、中华慈善总
- 前言本次教程是基于学校的大数据实验而做的,博主在搭建的同时,记录了自己的命令运行结果截图,在图书馆搭建环境+写博客,也花了将近3个小时。长时
- 背景:在用jmeter压测接口的时候发现其原生的监控起来不是很友好,在网上查阅的时候发现结合influxDB和grafana,出来的报告很炫
- 成功是一种习惯,失败也是一种习惯。你的习惯无法改变,但可以用好的习惯来替代。成功很简单,只要简单的事情重复做,养成习惯,如此而已。 以下是成
- 我用的一个文章列表加上序号效果css代码部分 <style type="text/css">&nb
- IIS6.0有个导出配置的功能,但你却找不到界面上的直接导入配置功能,需要用到操作系统自带的iiscnfg.vbs脚本。(图片小点击看大图)
- centOS 7如何安装docker?本文给出详细的步骤。首先准备一台linux系统。Docker需要一个64位系统的系统,内核的版本必须大
- VMware异常关闭后再次启动提示“以独占方式锁定此配置文件失败”!!!前几日在使用VMware虚拟机的时候,虚拟机突然出现了卡顿,然后就把
- 当使用ajax跨域请求时,浏览器报错:XmlHttpRequest error: Origin null is not allowed by
- 从07年进入站长行列以来已经差都三年了,从之前的对做站的一窍不通到慢慢学会使用CMS和网站程序再到接触到DEDECMS,一路走来,谈不上摸爬
- 一、操作系统的选择FTP服务器首先是基于操作系统而运作的,因而操作系统本身的安全性就决定了FTP服务器安全性的级别。虽然Windows 98
- 1、下载镜像docker pull selenium/hubdocker pull selenium/node-firefoxdocker
- 途牛网tuniu.com作为国内知名的旅游直销网站在国内还是很有名气的,也是南京本地为数不多的比较成功的互联网企业。去年大学刚毕业刚好认识途