|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
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_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 命令查看文件目录的策略类型 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/bugzilla/show_bug.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 试一下吧,一定有效 ;) 返回类别: 教程 上一教程: LINUX必须学会的60个命令---文件处理[6] 下一教程: LINUX下流媒体服务器具体安装,配置 您可以阅读与"SELINUX中的APACHE和MYSQL设定"相关的教程: · 用SSL构建一个安全的APACHE之三 · 在APACHE中,同一个IP配置两个虚拟主机的例子 · 超级链接时如何设定目标窗口? · 让Office中的格式刷用起来更顺手 · APACHE指南:.HTACCESS文件使用手册 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |