CentOS 6 kickstart mengabaikan 'selinux --disabled'

8

Saya telah berjuang dengan yang satu ini sebentar dan tampaknya telah terjadi regresi dalam CentOS 6 sejauh anaconda mengabaikan selinux --disabledarahan. Ini tampaknya pertama kali muncul di RHEL 4.8 , dan kemudian muncul kembali di RHEL 5.6 .

Sekarang dengan rilis sebelumnya Anda hanya akan menambahkan pernyataan sed ke %postarahan Anda untuk menonaktifkannya.

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

Masalah yang saya hadapi adalah bahwa yang baru di RHEL / CentOS 6 adalah fakta bahwa mereka mengatur atribut sistem file secara default sehingga Anda sekarang harus pergi dan menghapusnya.

Saya mencoba menjalankan perintah berikut untuk menghapus atribut-atribut di %postbagian saya , tetapi tidak memiliki efek apa pun.

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

File kickstart saya ada di bawah jika Anda merasa terbantu:

#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
sumber
Saya belum punya masalah dengan menonaktifkan selinux dari kickstarts saya di EL5.x atau EL6. Apakah masalah Anda memiliki masalah sistem file setelah instalasi baru?
ewwhite
Tidak, setelah kickstart instal SELinux masih diatur ke 'penegakan' dan atribut sistem file masih ditetapkan.
Zypher
@ Zypher, FYI: Di %prebait Anda, Anda menambahkan /tmp/nic-includedan kemudian mengatasinya di baris berikutnya.
Belmin Fernandez
@ BeamingMel-Bin oh ya, hanya kode debug saya lupa untuk mengambil.
Zypher

Jawaban:

6

Pemasang CentOS 6 memuat kebijakan dalam mode permisif secara default (yang saya konfirmasikan dengan menjalankan dmesg selama instalasi). Yang dimaksud dengan langkah pemasangan pos, SELinux sudah aktif. Selama ini berjalan, sepertinya Anda tidak bisa menghapus atribut.

Anda harus melewati tempat berikut sebelum memulai instalasi (tepat di akhir kernel, baris boot loader):

selinux=0

Jadi sesuatu seperti ini:

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

Inilah yang terjadi ketika Anda mencoba untuk menghapus atribut saat dalam mode permisif (maafkan pemformatan, SF tampaknya tidak bahagia):

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

Dengan selinux dinonaktifkan dari grub saat boot:

[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

Berdasarkan ini dan juga laporan bug ini , ini mungkin berarti Anda tidak akan dapat menghapus atribut dalam pemasangan pos. Jadi seperti yang saya jelaskan, Anda harus menonaktifkan selinux sebelum mem-boot instalasi.

(atau Anda bisa membiarkannya dan belajar untuk hidup dengannya. :)).

Rilindo
sumber
Ini dikombinasikan dengan garis sed dari posting saya bekerja seperti pesona!
Zypher
Hanya ingin tahu, untuk peneguhan saya sendiri: Mengapa ada kebutuhan untuk menghapus atribut extended yang ditinggalkan oleh SELinux?
Rilindo
Saya telah mengalami masalah yang karena alasan apa pun ketika atribut diperluas + selinux off berarti layanan tidak dapat membaca file - terutama ketika menggabungkan acl dan nfs ke dalam campuran. Bunuh atribut yang diperluas dan masalahnya hilang
Zypher
2

'Penyebab utama' dari masalah ini, adalah bahwa Anaconda mengimplementasikan atribut selinux selama proses kickstart (sehingga penonaktifan 'pasca pemasangan', sudah terlambat).

Saya telah menempatkan metode penonaktifan di file konfigurasi host (sebenarnya, mereka selalu ada di sana):

firewall --disabled 
selinux --disabled

TETAPI, juga menambahkan string 'selinux = 0' ke file boot PXE:

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

linux default
label linux
  kernel vmlinuz-rhel-6.4-x86_64
  append load_ramdisk = 1 initrd = initrd.img-rhel-6.4-x86_64 selinux jaringan = 0 ksdevice = eth0 ks = nfs: nolock, rsize = 1480, wsize = 1480: buildserver: /kickstart/host-configs/myserver-ksfg

Setelah membangun kembali sistem, semua notasi 'titik' hilang !!!

Yubby McFly
sumber