尝试使 SELinux 运行时出现空文件夹和内核崩溃

尝试使 SELinux 运行时出现空文件夹和内核崩溃

我对 SELinux 有很奇怪的看法。
我的帖子可能有点混乱,因为我不完全明白到底发生了什么。

在讲述所有故事之前,我已经安装了良好且非常稳定的 Linux:

CentOS 5.5  
uname -a:  
    Linux andreys-comp 2.6.18-194.8.1.el5xen #1 SMP
    Thu Jul 1 19:41:05 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux  

getenforce  
echo $? 
0  

但是有一天(昨天)我决定yum update同时执行: (cvs 将所有文件下载到自行创建的 /SELinux 目录中)
cvs -d:pserver:[email protected]:/cvsroot/SELinux -z3 co nsa

下载后,我阅读了 README,其中说要完全安装自编译的 SELinux,我需要执行以下操作:

make menuconfig  
make  
make install  

我确实只做了 (!),但之后我的电脑就变得疯狂了。
我不知道这一切是因为系统更新,还是 SELinux 编译,或者两者兼而有之,但 Firefox 停止显示页面,当我尝试运行我最近安装的 system-config-SELinux 时,我得到:

/usr/lib64/Python2.4/site-packages/SELinux/_SELinux.so: undefined symbol: SELinux_check_securetty_context  

并且没有运行。
之后我重启了系统,在系统启动过程中我得到了内核崩溃和类似这样的信息:“无法应用 SELinux 策略”(我不记得具体时间了,这个消息在屏幕上停留的时间不够长,因为电脑死机了)
所以我所做的是从 LiveCD 运行以禁用 /etc/SELinux/config 文件中的 SELinux,但是(!)(高潮时刻到了)当我在 LiveCD 文件系统的 / 上运行 ls 时,我看到:

[root@livecd /]# ls -la  
total 180  

drwxr-xr-x   4 root root     0 Aug  9 18:23 SELinux  

但它是虚拟文件系统!我记得 cvs 将所有源代码下载到了/SELinux
这是此目录的上下文:system_u:object_r:security_t
更多,/SELinux目录甚至包含文件。其中一个是空字符设备。
这是 LiveCD 文件系统的常规目录吗?或者这是我最近cvs在某个神秘存储中创建的目录,并被阴险地安装到 LiveCD 的根文件系统中?

之后,我挂载了硬盘的根文件系统,ls并发现我的 SELinux 目录完全正常地驻扎在那里:

[root@livecd VolGroup00-LogVol01]# ls -la  
total 240  

drwxr-xr-x   2 root   root    4096 Jun  5 07:01 SELinux  

但是(!)这个目录现在里面是空的!这是目录的上下文:system_u:object_r:file_t

这是 LiveCD 模式下的安装:

/dev/mapper/live-rw on / type ext3 (rw,noatime) 
proc on /proc type proc (rw)  
sysfs on /sys type sysfs (rw)  
devpts on /dev/pts type devpts (rw,gid=5,mode=620)  
tmpfs on /dev/shm type tmpfs (rw)  
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)  
/dev/hdc on /mnt/live type iso9660 (ro)  
/dev/sda2 on /mnt/disc/sda2 type ext3 (ro)  
/dev/sda6 on /mnt/disc/sda6 type vfat (ro,uid=500)  
/dev/mapper/VolGroup00-LogVol01 on /mnt/lvm/VolGroup00-LogVol01 type ext3 (rw)  
/dev/mapper/VolGroup00-LogVol00 on /mnt/lvm/VolGroup00-LogVol00 type ext3 (ro)  

完成所有这些后,我在相应的文件中禁用了 SELinux:

SELinux=disabled  
SELinuxTYPE=targeted  
SETLOCALDEFS=0   

我重启了电脑。启动后,我再次以 root 身份执行 ls,发现 SELinux 目录又出现了,但还是空的!

[root@andreys-comp SELinux]# pwd  
/SELinux  
[root@andreys-comp SELinux]# ls  
[root@andreys-comp SELinux]#   

还有更多。当我从硬盘启动时,我安装了squashfs.imgLiveCD ext3fs.img,其中包含所有根文件系统,我看到的是:

[root@andreys-comp isotemp2]# mount  

/isotemp/LiveOS/ext3fs.img on /isotemp2 type ext3 (ro,loop=/dev/loop1)  

[root@andreys-comp isotemp2]# ls -l  
total 180  

drwxr-xr-x  2 root root  4096 Oct  2  2009 SELinux  

[root@andreys-comp isotemp2]# cd SELinux/  
[root@andreys-comp SELinux]# ls  
[root@andreys-comp SELinux]#   

也是空的!SELinux 代码都去哪了?

现在,我可能讲了很多有关 SELinux 文件夹的内容,但有关 SELinux 的一般问题的问题对我来说同样重要。
因此,如果我启用 SELinux,我会得到内核恐慌(即使我在运行级别 1 中启动)。
使用 LiveCD 启动并禁用它后,一切又恢复正常。

我有两个问题:

  1. 所有已编译的 SELinux 对象在哪里?

  2. 我该如何还我的计算机世界和谐与和平?

答案1

您可以尝试启动 live CD,chroot 到您的磁盘,挂载所有适当的挂载点(设备等)并尝试类似操作(这可能是错误的,但我想您明白了)

yum remove selinux
yum install selinux

相关内容