CentOS 6 kickstart ignorando 'selinux --disabled'

8

Eu tenho lutado um pouco com esse e parece que houve uma regressão no CentOS 6 até o anaconda ignorando a diretiva selinux --disabled . Isso parece ter aparecido pela primeira vez em RHEL 4.8 e, em seguida, reapareceu em RHEL 5.6 .

Agora, com as versões anteriores, você adicionaria a instrução sed à diretiva %post para desativá-la.

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

O problema que estou correndo é que o novo no RHEL / CentOS 6 é o fato de que eles estão configurando os atributos do sistema de arquivos por padrão, então você agora tem que ir e limpá-los.

Eu tentei executar o seguinte comando para remover esses atributos na minha seção %post , mas isso não tem nenhum efeito.

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

Meu arquivo de kickstart está abaixo, caso você ache ú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=\).*$/disabled/' /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/
    
por Zypher 13.12.2011 / 23:53

2 respostas

6

O instalador do CentOS 6 carrega as políticas no modo permissivo por padrão (o que eu confirmei executando o dmesg durante a instalação). Isso significa que, após a etapa de pós-instalação, o SELinux já está ativo. Enquanto estiver em execução, não parece que você possa remover os atributos.

Você terá que passar o seguinte em algum lugar antes do início da instalação (no final do kernel a linha do gerenciador de inicialização):

selinux=0

Então, algo assim:

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

Aqui está o que acontece quando você tenta remover os atributos enquanto está no modo permissivo (perdoe a formatação, SF parece estar insatisfeito):

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

Com o selinux desativado no grub no momento da inicialização:

[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

Com base nisso, bem como neste relatório , isso provavelmente significa que você não será capaz para remover os atributos na pós-instalação. Então, conforme descrevi, você precisará desabilitar o selinux antes de inicializar a instalação.

(ou você pode simplesmente deixá-lo sozinho e aprender a viver com isso :)).

    
por 14.12.2011 / 05:14
2

A 'causa raiz' do problema, é que o Anaconda implementa os atributos do selinux durante o processo de kickstart (de forma que qualquer desabilitação de 'pós-instalação' seja tarde demais).

Eu coloquei os métodos de desativação nos arquivos de configuração do host (na verdade, eles sempre estavam lá):

firewall --disabled
selinux --disabled

MAS, também incluiu a string 'selinux = 0' no arquivo de inicialização 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

Após a reconstrução do sistema, todas as notações 'ponto' foram perdidas !!!

    
por 28.11.2013 / 02:14