selinux开启后,系统无法正常启动,网络服务都不起不来了!

装完系统后关闭了selinux,然后装了一些软件,之后又把selinux打,重启发现很多服务都起不来,网络服务都起不来,要把selinux关闭后才恢复正常

作者: sonorous   发布时间: 2009-08-03

你的服务时自己编译的还是系统自带的?

作者: chenyx   发布时间: 2009-08-03

SEL 不需要的话就关了嘛

作者: yjw276009649   发布时间: 2009-08-03

selinux还是开着好些。检查一下不起来的网络服务的selinux上下文。

作者: www_xylove   发布时间: 2009-08-04

那鸟东西直接关掉,没用

作者: gaoshixing   发布时间: 2009-08-04

错误信息。

作者: vermouth   发布时间: 2009-08-04

还真是奇怪了,同样的情况,我有两台centos5,开启selinux后重启,一切正常,但是在rhel5上开启selinux后重启就起不来了,出错信息如下:

作者: sonorous   发布时间: 2009-08-06

看图应该是selinux没安装好,缺少必要的库文件

作者: HH106   发布时间: 2009-08-07

啊,不会吧, 文件我有的呀,rpm包也查过

作者: sonorous   发布时间: 2009-08-07

缺哪些包呢?如何查缺哪些包
是不是phyton的啊

作者: sonorous   发布时间: 2009-08-07



QUOTE:
原帖由 gaoshixing 于 2009-8-4 10:50 发表
那鸟东西直接关掉,没用

我给你一个最高评价:2

作者: marsaber   发布时间: 2009-08-07

我查了一下, 包都是一样的,没有少装

作者: sonorous   发布时间: 2009-08-07

包都是对的,我找了另外两台机器,都是正常的,问题到底出在哪里呢,感觉就是libselinux.so.1有问题

我用ldd /usr/sbin/restorecond试了一下,在不开selinux的情况下输出都是正常的,如下:
[root@rhel5-2 tmp]# ldd /usr/sbin/restorecond
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00002b1a7596f000)
        libsepol.so.1 => /lib64/libsepol.so.1 (0x00002b1a75b87000)
        libc.so.6 => /lib64/libc.so.6 (0x00002b1a75dcd000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00002b1a76121000)
        /lib64/ld-linux-x86-64.so.2 (0x00002b1a75753000)
[root@rhel5-2 tmp]#

在没有问题的机器上打开selinux后运行ldd,输出也正常,如下:
[root@centos5-1 ~]# getenforce
Enforcing
[root@centos5-1 ~]# ldd /usr/sbin/restorecond
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00002aaaaacc6000)
        libsepol.so.1 => /lib64/libsepol.so.1 (0x00002aaaaaede000)
        libc.so.6 => /lib64/libc.so.6 (0x00002aaaab124000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00002aaaab475000)
        /lib64/ld-linux-x86-64.so.2 (0x00002aaaaaaab000)
[root@centos5-1 ~]#

在有问题的机器上,如果开了selinux,ldd输出就会报错,如下:
[root@rhel5-1 tmp]# getenforce
Enforcing
[root@rhel5-1 tmp]#
[root@rhel5-1 ~]# ldd /usr/sbin/restorecond
/usr/sbin/restorecond: error while loading shared libraries: libselinux.so.1: failed to map segment from shared object: Permission denied
[root@rhel5-1 ~]#

作者: sonorous   发布时间: 2009-08-12

其实问题就是出在restorecon做不了, 打开selinux后,下一次重启的时候系统会自动做relabel的,实际上就是restorecon

作者: sonorous   发布时间: 2009-08-12

你啟動方式不對。

若你當初有關閉掉,目前要打開需要先這樣:

1. /etc/sysconfig/selinux 內的啟用模式要先改 permissive,而不是 enforce

2. 執行 touch /.autorelabel 後重新啟動系統,系統會重新標記 security context 這類資訊

3. 開好後執行 setenforce 1 進入強制模式,然後改 /etc/sysconfig/selinux 內設定為 enforce,往後系統都會用該模式

作者: kenduest   发布时间: 2009-08-12

是因为文件的selinux的扩展属性不对,由于你曾经关掉过selinux,在关掉selinux时创建和修改的文件不会有selinux的扩展属性,在你又打开selinux时,selinux会为这些文件赋予缺省的selinux属性,这样文件的文件,有些应用程序是不能访问的,selinux的安全保证。

修复这个问题确实比较烦,首先你对于上面所有permission deny的文件,要修改其selinux的扩展属性,用命令chcon可以修改,ls -Z可以查看,具体可以参考下面的链接
http://wiki.centos.org/HowTos/SELinux

比如,/etc/sysconfig/network-scripting/ifcfg-eth0 文件的的selinux扩展属性的type(最后一个部分)
应该是etc_t,如果你的是file_t,那么应用程序访问该文件时,就会被拒绝。

你可以找一个selinux enable的机子,对照文件的selinux属性,把不同的改过来。

作者: Largem   发布时间: 2009-08-13



QUOTE:
原帖由 kenduest 于 2009-8-12 13:47 发表
你啟動方式不對。

若你當初有關閉掉,目前要打開需要先這樣:

1. /etc/sysconfig/selinux 內的啟用模式要先改 permissive,而不是 enforce

2. 執行 touch /.autorelabel 後重新啟動系統,系統會重新標記 ...

我会试一下, 谢谢你

作者: sonorous   发布时间: 2009-08-14



QUOTE:
原帖由 Largem 于 2009-8-13 10:24 发表
是因为文件的selinux的扩展属性不对,由于你曾经关掉过selinux,在关掉selinux时创建和修改的文件不会有selinux的扩展属性,在你又打开selinux时,selinux会为这些文件赋予缺省的selinux属性,这样文件的文件, ...

这个办法我也试过,但是太麻烦,文件太多,我发现id -Z的输出也不同

作者: sonorous   发布时间: 2009-08-14



QUOTE:
原帖由 kenduest 于 2009-8-12 13:47 发表
你啟動方式不對。

若你當初有關閉掉,目前要打開需要先這樣:

1. /etc/sysconfig/selinux 內的啟用模式要先改 permissive,而不是 enforce

2. 執行 touch /.autorelabel 後重新啟動系統,系統會重新標記 ...

试了一下这种方法, 还是不行, 错误和原来是一样的,libselinux.so.1 load出错

作者: sonorous   发布时间: 2009-08-17

我不知道id -Z和ls -Z输出中的s0是表示什么,
以下是正常机器的输出:
[root@centos5-1 lib]# ls -Z libselinux.so.1
-rwxr-xr-x  root root system_ubject_r:lib_t          libselinux.so.1
[root@centos5-1 lib]# id -Z
root:system_r:unconfined_t:SystemLow-SystemHigh
[root@centos5-1 lib]#

作者: sonorous   发布时间: 2009-08-17