CentOS 6 Kickstart ignoriert 'selinux --disabled'

8

Ich habe ein bisschen mit diesem gekämpft und es scheint, dass es in CentOS 6 eine Regression gegeben hat, soweit Anaconda die selinux --disabledRichtlinie ignoriert . Dies scheint zuerst in RHEL 4.8 und dann in RHEL 5.6 wieder aufgetaucht zu sein .

Mit den vorherigen Versionen würden Sie jetzt einfach die sed-Anweisung zu Ihrer %postDirektive hinzufügen , um sie zu deaktivieren.

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

Das Problem, auf das ich stoße, ist, dass neu in RHEL / CentOS 6 die Tatsache ist, dass standardmäßig Dateisystemattribute festgelegt werden, sodass Sie diese jetzt löschen müssen.

Ich habe versucht, den folgenden Befehl auszuführen, um diese Attribute in meinem %postAbschnitt zu entfernen, aber er hat keine Auswirkungen.

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

Meine Kickstart-Datei ist unten, falls Sie sie hilfreich finden:

#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
quelle
Ich hatte keine Probleme mit der Deaktivierung von Selinux von meinen Kickstarts in EL5.x oder EL6. Ist das Problem, dass Sie nach Neuinstallationen Probleme mit dem Dateisystem haben?
ewwhite
Nein, nach einer Kickstart-Installation ist SELinux immer noch auf "Durchsetzen" eingestellt und die Dateisystemattribute sind immer noch eingestellt.
Zypher
@Zypher, FYI: In Ihrer %preStrophe hängen Sie an /tmp/nic-includeund streichen es dann in der nächsten Zeile.
Belmin Fernandez
@ BeamingMel-Bin oh ja, nur Debugging von Code, den ich vergessen habe herauszunehmen.
Zypher

Antworten:

6

Das CentOS 6-Installationsprogramm lädt die Richtlinien standardmäßig im zulässigen Modus (was ich durch Ausführen von dmesg während der Installation bestätigt habe). Mit dem Schritt nach der Installation ist SELinux bereits aktiv. Solange es ausgeführt wird, können Sie die Attribute nicht entfernen.

Sie müssen vor Beginn der Installation irgendwo Folgendes übergeben (direkt am Ende des Kernels die Bootloader-Zeile):

selinux=0

Also so etwas wie das:

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

Folgendes passiert, wenn Sie versuchen, die Attribute im zulässigen Modus zu entfernen (verzeihen Sie die Formatierung, SF scheint unglücklich zu sein):

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

Wenn selinux beim Booten von grub deaktiviert ist:

[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

Auf der Grundlage dieser und diesen Fehler melden , ist dies wahrscheinlich bedeutet , dass Sie nicht in der Lage sein , installieren die Attribute in der Post zu entfernen. Wie bereits erwähnt, müssen Sie selinux deaktivieren, bevor Sie die Installation starten.

(oder du kannst es einfach in Ruhe lassen und lernen, damit zu leben. :)).

Rilindo
quelle
Dies kombiniert mit der sed-Linie von meinem Beitrag wirkte wie ein Zauber!
Zypher
Nur neugierig für meine eigene Erbauung: Warum müssen die von SELinux hinterlassenen Erweiterungsattribute entfernt werden?
Rilindo
Ich bin auf Probleme gestoßen, die aus irgendeinem Grund dazu führen, dass Dienste Dateien nicht lesen können, wenn erweiterte Attribute + Selinux deaktiviert sind - insbesondere, wenn acls und nfs in der Mischung kombiniert werden. Töte die erweiterten Attribute und das Problem
verschwindet
2

Die 'Hauptursache' des Problems ist, dass Anaconda die Selinux-Attribute während des Kickstart-Prozesses implementiert (so dass eine Deaktivierung nach der Installation zu spät ist).

Ich habe die Deaktivierungsmethoden in die Host-Konfigurationsdateien eingefügt (tatsächlich waren sie immer vorhanden):

Firewall - deaktiviert 
selinux - deaktiviert

ABER, fügte auch die Zeichenfolge 'selinux = 0' zur PXE-Bootdatei hinzu:

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

Standard Linux
Label Linux
  Kernel vmlinuz-rhel-6.4-x86_64
  append load_ramdisk = 1 initrd = initrd.img-rhel-6.4-x86_64 Netzwerkselinux = 0 ksdevice = eth0 ks = nfs: nolock, rsize = 1480, wsize = 1480: buildserver: /kickstart/host-configs/myserver-ks.cfg

Nach dem Wiederaufbau des Systems waren alle 'Punkt'-Notationen verschwunden !!!

Yubby McFly
quelle