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

8

Я немного боролся с этим, и похоже, что в 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/
Zypher
источник
У меня не было проблем с отключением selinux из моих кикстартов в EL5.x или EL6. Проблема в том, что у вас проблемы с файловой системой после новой установки?
ewwhite
Нет, после кикстарт-установки SELinux по-прежнему установлен на «принудительное применение», а атрибуты файловой системы по-прежнему установлены.
Zypher
@Zypher, К вашему сведению: в вашей %preстрофе вы добавляете, /tmp/nic-includeа затем разбиваете ее на следующей строке.
Бельмин Фернандес
@ BeamingMel-Bin О да, просто отладка кода, который я забыл вынести.
Zypher

Ответы:

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

При отключенном 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 перед загрузкой установки.

(или вы можете просто оставить это в покое и научиться жить с этим. :)).

Rilindo
источник
Это в сочетании с линией sed из моего поста сработало как шарм!
Zypher
Просто любопытно, для моего собственного назидания: почему необходимо удалить атрибуты расширения, оставленные SELinux?
Rilindo
Я столкнулся с проблемами, которые по любой причине, когда расширенные атрибуты + selinux отключены, означают, что сервисы не могут читать файлы - особенно при объединении acls и nfs в смесь. Убейте расширенные атрибуты, и проблема исчезнет
Zypher
2

Основной причиной проблемы является то, что Anaconda реализует атрибуты selinux во время процесса кикстарта (так что любое отключение после установки слишком поздно).

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

межсетевой экран --disabled 
selinux --disabled

НО, также добавил строку selinux = 0 в загрузочный файл 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 сеть selinux = 0 ksdevice = eth0 ks = nfs: nolock, rsize = 1480, wsize = 1480: buildserver: /kickstart/host-configs/myserver-ks.cfg

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

Юби МакФлай
источник