我一直在和这个争斗一下,似乎在CentOS 6中有一个退步,就像anaconda忽略了selinux --disabled指令。 这似乎首先出现在RHEL 4.8中 ,然后在RHEL 5.6中重新出现。
现在使用以前的版本,您只需将sed语句添加到您的%post指令中即可将其禁用。
sed -i -e 's/\(^SELINUX=\).*$/\1permissive/' /etc/selinux/config
我遇到的问题是RHEL / CentOS 6中的新增function是默认设置文件系统属性,所以现在您必须清除这些文件系统属性。
我尝试运行以下命令来去掉我的%post部分中的这些属性,但是它没有任何作用。
find . -exec setfattr -x security.selinux {} \;
我的kickstart文件在下面以防万一你觉得有帮助:
#version=RHEL6 install url --url=http://ny-man01.ds.stackexchange.com/centos/6/os/x86_64 lang en_US.UTF-8 keyboard us %include /tmp/nic-include rootpw --iscrypted <mmm no you don't even get the encrypted version> firewall --service=ssh,ntp,snmp authconfig --enableshadow --passalgo=sha512 --enablefingerprint --enablekrb5 selinux --disabled timezone --utc Etc/UTC bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" # The following is the partition information you requested # Note that any partitions you deleted are not expressed # here so unless you clear all partitions first, this is # not guaranteed to work clearpart --all --initlabel --drives=sda part /boot --fstype=ext4 --size=500 part pv.M3dTcp-jomG-l0xc-Zl3I-wqR1-Gcwz-14jidB --grow --size=1 volgroup vg_test --pesize=4096 pv.M3dTcp-jomG-l0xc-Zl3I-wqR1-Gcwz-14jidB logvol / --fstype=ext4 --name=lv_root --vgname=vg_test --grow --size=1024 --maxsize=51200 logvol swap --name=lv_swap --vgname=vg_test --grow --size=1024 --maxsize=6016 services --enabled ntpd,snmpd,puppet reboot repo --name="CentOS" --baseurl=http://ny-man01.ds.stackexchange.com/centos/6/os/x86_64/ -- cost=100 repo --name="EPEL6" --baseurl=http://ny-man01.ds.stackexchange.com/epel/6/x86_64/ repo --name="SEI" --baseurl=http://ny-man01.ds.stackexchange.com/sei/ %packages @base @core @hardware-monitoring @perl-runtime @server-policy @system-admin-tools pam_krb5 sgpio perl-DBD-SQLite epel-release-6-5 net-snmp ntp mercurial puppet %pre echo "# `grep /proc/net/dev eth| cut -d: -f1 | cut -d' ' -f3` " >>/tmp/nic-include echo "# auto generated nic setup" > /tmp/nic-include for nic in `grep eth /proc/net/dev| cut -d: -f1 | cut -d' ' -f3` do if [ "$nic" = "eth0" ] then echo "network --device $nic --bootproto dhcp " >> /tmp/nic-include else echo "network --device $nic --onboot no --bootproto dhcp" >> /tmp/nic-inclu de fi done %post --log /root/ks-post.log #sed -i -e 's/\(^SELINUX=\).*$/\1disabled/' /etc/selinux/config #find / -exec setfattr -x security.selinux {} \; wget -O- http://10.7.0.50/kickstart/generic-configs/get_files.sh | /bin/bash cp /tmp/nic-include /root/
CentOS 6安装程序在默认情况下(在安装过程中通过运行dmesg来确认)加载策略。 这意味着安装后的步骤,SELinux已经是活跃的。 只要它正在运行,它看起来不像你可以删除的属性。
在安装开始之前(在内核的引导加载程序行结束处),你将不得不通过下面的地方:
selinux=0
所以像这样的东西:
kernel /boot/vmlinuz-2.4.20-XXXXXXXXX ro root=/dev/hda1 nousb selinux=0
以下是当您在宽容模式下尝试删除属性时会发生的情况(原谅格式化,SF似乎不愉快):
[root@centos6dev test]# find . -exec setfattr -x security.selinux {} \; setfattr: .: Permission denied setfattr: ./test2: Permission denied setfattr: ./test3: Permission denied setfattr: ./test: Permission denied
在启动时禁用grub的selinux:
[root@centos6dev test]# ls -Z -rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 test -rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 test2 -rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 test3 [root@centos6dev test]# find . -exec setfattr -x security.selinux {} \; [root@centos6dev test]# ls -la total 8 drwxr-xr-x 2 root root 4096 Dec 13 22:27 . dr-xr-x---. 4 root root 4096 Dec 13 22:27 .. -rw-r--r-- 1 root root 0 Dec 13 22:27 test -rw-r--r-- 1 root root 0 Dec 13 22:27 test2 -rw-r--r-- 1 root root 0 Dec 13 22:27 test3 [root@centos6dev test]# ls -Z -rw-r--r-- root root ? test -rw-r--r-- root root ? test2 -rw-r--r-- root root ? test3
基于这个以及这个错误报告 ,这可能意味着您将无法删除安装后的属性。 正如我所概述的,在引导安装之前,您需要禁用selinux。
(或者你可以把它放在一边,学会和它一起生活:))。
这个问题的根本原因在于,Anaconda在kickstart过程中实现了selinux属性(这样任何“安装后”禁用都为时已晚)。
我已经在主机configuration文件(实际上,他们总是在那里)禁用方法:
防火墙 - 禁用
selinux --disabled
但是,还将'selinux = 0'string添加到PXE引导文件中:
/tftpboot/pxelinux.cfg> cat 01-00-24-4f-ab-1e-84 默认的linux 标签linux 内核vmlinuz-rhel-6.4-x86_64 append load_ramdisk = 1 initrd = initrd.img -rhel-6.4-x86_64 network selinux = 0 ksdevice = eth0 ks = nfs:nolock,rsize = 1480,wsize = 1480:buildserver:/kickstart/host-configs/myserver-ks.cfg
重build系统后,所有'点'符号都消失了!
我用这个设置解决了kickstart文件中的这个问题
selinux --disabled