Назад | Перейти на главную страницу

CentOS 6 кикстарт игнорирует selinux --disabled

Я немного боролся с этим, и кажется, что в CentOS 6 произошел регресс, поскольку анаконда игнорировала 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 {} \;

Ниже приведен мой файл кикстарта на случай, если он окажется для вас полезным:

#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

Когда selinux отключен из grub во время загрузки:

[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 реализует атрибуты selinux во время процесса кикстарта (так что любое отключение «после установки» происходит слишком поздно).

Я поместил методы отключения в файлы конфигурации хоста (на самом деле, они всегда были там):

firewall --disabled
selinux --disabled

НО, также добавил строку 'selinux = 0' в загрузочный файл PXE:

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

default linux
label linux
  kernel 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

После перестройки системы все «точечные» обозначения исчезли !!!