CentOS 6 kickstart ignorando 'selinux --disabled'

8

He estado luchando con este durante un tiempo y parece que ha habido una regresión en CentOS 6 en lo que respecta a la anaconda ignorando la selinux --disableddirectiva. Esto parece haber aparecido por primera vez en RHEL 4.8 , y luego reapareció en RHEL 5.6 .

Ahora, con las versiones anteriores, simplemente agregaría la declaración sed a su %postdirectiva para deshabilitarla.

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

El problema con el que me estoy encontrando es que lo nuevo en RHEL / CentOS 6 es el hecho de que están configurando los atributos del sistema de archivos de forma predeterminada, por lo que ahora tiene que ir y borrarlos.

Intenté ejecutar el siguiente comando para quitar esos atributos en mi %postsección, pero no tiene ningún efecto.

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

Mi archivo kickstart está abajo en caso de que lo encuentre útil:

#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
fuente
No he tenido ningún problema con la desactivación de selinux de mis kickstarts en EL5.xo EL6. ¿El problema es que tiene problemas con el sistema de archivos después de nuevas instalaciones?
ewwhite
No, después de una instalación kickstart, SELinux todavía está configurado como 'forzado' y los atributos del sistema de archivos aún están configurados.
Zypher
@Zypher, para tu información: en tu %preestrofa a la que anexas /tmp/nic-includey luego la golpeas en la siguiente línea.
Belmin Fernández
@ BeamingMel-Bin oh sí, solo código de depuración que olvidé sacar.
Zypher

Respuestas:

6

El instalador de CentOS 6 carga las políticas en modo permisivo de forma predeterminada (lo que confirmé ejecutando dmesg durante la instalación). Eso significa que con el paso posterior a la instalación, SELinux ya está activo. Mientras se esté ejecutando, no parece que pueda eliminar los atributos.

Tendrá que pasar lo siguiente en algún lugar antes del inicio de la instalación (justo al final del núcleo, la línea del cargador de arranque):

selinux=0

Entonces algo como esto:

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

Esto es lo que sucede cuando intenta eliminar los atributos mientras está en modo permisivo (perdone el formato, SF parece ser infeliz):

[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 deshabilitado de grub en el momento del arranque:

[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

Basado en esto y en este informe de error , esto probablemente significa que no podrá eliminar los atributos en la instalación posterior. Entonces, como lo describí, deberá deshabilitar selinux antes de iniciar la instalación.

(o puedes dejarlo solo y aprender a vivir con él. :)).

Rilindo
fuente
¡Esto combinado con la línea sed de mi publicación funcionó de maravilla!
Zypher
Solo por curiosidad, para mi propia edificación: ¿Por qué es necesario eliminar los atributos extendidos que deja SELinux?
Rilindo
Me he encontrado con problemas que, por cualquier razón, cuando los atributos extendidos + selinux desactivado significan que los servicios no pueden leer archivos, especialmente cuando se combinan acls y nfs en la mezcla. Mata los atributos extendidos y el problema desaparece
Zypher
2

La 'causa raíz' del problema es que Anaconda implementa los atributos selinux durante el proceso kickstart (de modo que cualquier desactivación 'posterior a la instalación' es demasiado tarde).

He colocado los métodos de desactivación en los archivos de configuración del host (en realidad, siempre estuvieron allí):

cortafuegos - deshabilitado 
selinux - deshabilitado

PERO, también agregó la cadena 'selinux = 0' al archivo de arranque PXE:

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

Linux predeterminado
etiqueta de linux
  kernel vmlinuz-rhel-6.4-x86_64
  agregar 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

¡Después de reconstruir el sistema, todas las anotaciones de 'punto' desaparecieron!

Yubby McFly
fuente