我已经与这个问题斗争了一段时间,似乎在 CentOS 6 中,anaconda 忽略了该selinux --disabled
指令,这已经是一个倒退了。这似乎最早出现在红帽企业版 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/
答案1
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。
(或者你可以不去管它,并学会如何忍受它。:))。
答案2
问题的‘根本原因’是 Anaconda 在 kickstart 过程中实现了 selinux 属性(因此任何‘安装后’禁用都为时已晚)。
我已将禁用方法放在主机配置文件中(实际上,它们一直在那里):
防火墙 --disabled
selinux --disabled
但是,还将“selinux = 0”字符串添加到 PXE 启动文件中:
/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=0ksdevice=eth0 ks=nfs:nolock,rsize=1480,wsize=1480:buildserver:/kickstart/host-configs/myserver-ks.cfg
重建系统后,所有“点”符号都消失了!