Il kickstart di CentOS 6 ignora 'selinux --disabled'


8

Ho combattuto con questo per un po 'e sembra che ci sia stata una regressione in CentOS 6 per quanto riguarda l'anaconda ignorando la selinux --disableddirettiva. Questo sembra essere apparso per la prima volta in RHEL 4.8 e poi riapparire in RHEL 5.6 .

Ora con le versioni precedenti aggiungeresti semplicemente l'istruzione sed alla tua %postdirettiva per disabilitarla.

sed -i -e 's/\(^SELINUX=\).*$/\1permissive/' /etc/selinux/config

Il problema che sto riscontrando è che la novità di RHEL / CentOS 6 è il fatto che stanno impostando gli attributi del file system per impostazione predefinita, quindi ora devi andare a cancellarli.

Ho provato a eseguire il comando seguente per eliminare quegli attributi nella mia %postsezione, ma non ha alcun effetto.

find . -exec setfattr -x security.selinux {} \;

Il mio file kickstart è di seguito nel caso lo trovi utile:

#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/

Non ho avuto problemi con la disabilitazione di selinux dai miei kickstart in EL5.xo EL6. Il problema che hai problemi con il filesystem a seguito di nuove installazioni?
ewwhite,

No, dopo l'installazione kickstart SELinux è ancora impostato su 'imposizione' e gli attributi del file system sono ancora impostati.
Zypher,

@Zypher, FYI: Nella tua %prestrofa stai accodando /tmp/nic-includee poi la stai arrovellando nella riga successiva.
Belmin Fernandez,

@ BeamingMel-Bin oh sì, solo il codice di debug ho dimenticato di eliminare.
Zypher,

Risposte:


6

Il programma di installazione di CentOS 6 carica i criteri in modalità permissiva per impostazione predefinita (che ho confermato eseguendo dmesg durante l'installazione). Ciò significa che dal passo successivo all'installazione, SELinux è già attivo. Finché è in esecuzione, non sembra che tu possa rimuovere gli attributi.

Prima dell'inizio dell'installazione dovrete passare i seguenti punti (alla fine del kernel la riga del boot loader):

selinux=0

Quindi qualcosa del genere:

kernel /boot/vmlinuz-2.4.20-XXXXXXXXX ro root=/dev/hda1 nousb selinux=0

Ecco cosa succede quando si tenta di rimuovere gli attributi in modalità permissiva (perdonare la formattazione, SF sembra essere infelice):

[root@centos6dev test]# find . -exec setfattr -x security.selinux {} \;
setfattr: .: Permission denied
setfattr: ./test2: Permission denied
setfattr: ./test3: Permission denied
setfattr: ./test: Permission denied

Con selinux disabilitato da grub all'avvio:

[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

Sulla base di questo e di questo bug report , questo probabilmente significa che non sarai in grado di rimuovere gli attributi nella post-installazione. Quindi, come ho sottolineato, dovrai disabilitare selinux prima di avviare l'installazione.

(oppure puoi lasciarlo da solo e imparare a conviverci. :)).


Questo combinato con la linea sed del mio post ha funzionato come un fascino!
Zypher,

Solo curioso, per la mia edificazione: perché è necessario rimuovere gli attributi di estensione lasciati da SELinux?
Rilindo,

Ho riscontrato problemi che per qualsiasi motivo quando attributi estesi + selinux off significano che i servizi non possono leggere i file, specialmente quando si combinano acls e nfs nel mix. Uccidi gli attributi estesi e il problema scompare
Zypher,

2

La 'causa principale' del problema è che Anaconda implementa gli attributi selinux durante il processo kickstart (in modo tale che qualsiasi disabilitazione 'post-installazione', sia troppo tardi).

Ho inserito i metodi di disabilitazione nei file di configurazione dell'host (in realtà, erano sempre lì):

firewall - disabilitato 
selinux - disabilitato

MA, ha anche aggiunto la stringa 'selinux = 0' al file di avvio PXE:

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

Linux predefinito
etichetta linux
  kernel vmlinuz-rhel-6.4-x86_64
  aggiungi 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

Dopo aver ricostruito il sistema, tutte le notazioni 'punto' erano sparite !!!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.