CentOS 6 Kickstart忽略了“ selinux --disabled”


8

我一直在和这个争斗一阵子,似乎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中的新功能是它们默认设置文件系统属性,因此您现在必须清除这些属性。

我尝试运行以下命令来删除我的%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/

在EL5.x或EL6的kickstart中禁用selinux并没有任何问题。新安装后是否存在文件系统问题?
ewwhite 2011年

不会,在kickstart安装后,SELinux仍设置为“ enforcing”,并且文件系统属性仍被设置。
Zypher

@Zypher,仅供参考:在您的%pre节中,您要附加到/tmp/nic-include下一行,然后对其进行破坏。
Belmin Fernandez 2011年

@ BeamingMel-Bin哦,是的,只是调试代码我忘了拿出来。
Zypher 2011年

Answers:


6

默认情况下,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。

(或者您可以不理会它,并学会与之共处:。))。


这与我帖子中的sed行结合起来就像是一种魅力!
Zypher

出于好奇,只是出于好奇:为什么需要删除SELinux留下的扩展属性?
Rilindo 2011年

我遇到了一些问题,无论出于何种原因,当扩展属性+ selinux关闭时,服务都无法读取文件-尤其是将acls和nfs组合在一起时。杀死扩展属性,问题就消失了
Zypher

2

问题的“根本原因”是Anaconda在kickstart过程中实现了selinux属性(以至于任何“后安装”禁用都为时已晚)。

我已将禁用方法放置在主机配置文件中(实际上,它们始终存在):

防火墙-禁用
selinux-禁用

但是,还向PXE引导文件添加了“ selinux = 0”字符串:

/tftpboot/pxelinux.cfg>猫01-00-24-4f-ab-1e-84

默认Linux
标签Linux
  内核vmlinuz-rhel-6.4-x86_64
  附加load_ramdisk = 1 initrd = initrd.img-rhel-6.4-x86_64网络selinux = 0 ksdevice = eth0 ks = nfs:nolock,rsize = 1480,wsize = 1480:buildserver:/kickstart/host-configs/myserver-ks.cfg

重建系统后,所有的“点”符号都消失了!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.