我对 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.img
LiveCD 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 启动并禁用它后,一切又恢复正常。
我有两个问题:
所有已编译的 SELinux 对象在哪里?
我该如何还我的计算机世界和谐与和平?
答案1
您可以尝试启动 live CD,chroot 到您的磁盘,挂载所有适当的挂载点(设备等)并尝试类似操作(这可能是错误的,但我想您明白了)
yum remove selinux
yum install selinux