CentOS 6 kickstart ignorant 'selinux --disabled'

8

Je me bats avec celui-ci depuis un moment et il semble qu'il y ait eu une régression dans CentOS 6 jusqu'à anaconda ignorant la selinux --disableddirective. Cela semble être apparu pour la première fois dans RHEL 4.8 , puis réapparu dans RHEL 5.6 .

Maintenant, avec les versions précédentes, vous ajouteriez simplement l'instruction sed à votre %postdirective pour la désactiver.

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

Le problème que je rencontre est que la nouveauté de RHEL / CentOS 6 est le fait qu'ils définissent les attributs du système de fichiers par défaut, vous devez donc aller les effacer.

J'ai essayé d'exécuter la commande suivante pour supprimer ces attributs dans ma %postsection, mais cela n'a aucun effet.

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

Mon fichier kickstart est ci-dessous au cas où vous le trouveriez 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/
Zypher
la source
Je n'ai eu aucun problème avec la désactivation de selinux à partir de mes kickstarts dans EL5.x ou EL6. Est-ce que vous rencontrez des problèmes de système de fichiers après de nouvelles installations?
ewwhite
Non, après une installation Kickstart, SELinux est toujours défini sur «forcer» et les attributs du système de fichiers sont toujours définis.
Zypher
@Zypher, FYI: Dans votre %prestrophe, vous ajoutez, /tmp/nic-includepuis le tapotez sur la ligne suivante.
Belmin Fernandez
@ BeamingMel-Bin oh oui, juste le débogage du code que j'ai oublié de retirer.
Zypher

Réponses:

6

Le programme d'installation de CentOS 6 charge les politiques en mode permissif par défaut (ce que j'ai confirmé en exécutant dmesg lors de l'installation). Cela signifie par l'étape de post-installation, SELinux est déjà actif. Tant qu'il est en cours d'exécution, il ne semble pas que vous puissiez supprimer les attributs.

Vous devrez passer ce qui suit quelque part avant le début de l'installation (juste à la fin du noyau la ligne du chargeur de démarrage):

selinux=0

Donc quelque chose comme ça:

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

Voici ce qui se passe lorsque vous essayez de supprimer les attributs en mode permissif (pardonnez le formatage, SF semble mécontent):

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

Avec selinux désactivé de grub au démarrage:

[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

Sur la base de cela ainsi que de ce rapport de bogue , cela signifie probablement que vous ne pourrez pas supprimer les attributs lors de la post-installation. Donc, comme je l'ai indiqué, vous devrez désactiver selinux avant de démarrer l'installation.

(ou vous pouvez simplement le laisser tranquille et apprendre à vivre avec. :)).

Rilindo
la source
Ceci combiné avec la ligne sed de mon post a fonctionné comme un charme!
Zypher
Juste curieux, pour ma propre édification: pourquoi est-il nécessaire de supprimer les attributs étendus laissés par SELinux?
Rilindo
J'ai rencontré des problèmes qui, pour une raison quelconque, lorsque les attributs étendus + selinux off signifient que les services ne peuvent pas lire les fichiers - en particulier lors de la combinaison acls et nfs dans le mix. Tuez les attributs étendus et le problème disparaît
Zypher
2

La «cause première» du problème est qu'Anaconda implémente les attributs selinux pendant le processus de démarrage (de sorte que toute désactivation «post-installation» est trop tardive).

J'ai placé les méthodes de désactivation dans les fichiers de configuration de l'hôte (en fait, elles étaient toujours là):

pare-feu - désactivé 
selinux - désactivé

MAIS, a également ajouté la chaîne 'selinux = 0' au fichier de démarrage PXE:

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

Linux par défaut
label linux
  noyau vmlinuz-rhel-6.4-x86_64
  ajoutez 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

Après avoir reconstruit le système, toutes les notations «point» ont disparu !!!

Yubby McFly
la source