Khởi động CentOS 6 bỏ qua 'selinux - đã tắt'


8

Tôi đã chiến đấu với cái này một chút và có vẻ như đã có một hồi quy trong CentOS 6 cho đến khi Anaconda bỏ qua selinux --disabledchỉ thị. Điều này dường như đã xuất hiện lần đầu tiên trong RHEL 4.8 , và sau đó xuất hiện lại trong RHEL 5.6 .

Bây giờ với các bản phát hành trước, bạn chỉ cần thêm câu lệnh sed vào lệnh của bạn %postđể vô hiệu hóa nó.

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

Vấn đề tôi gặp phải là cái mới trong RHEL / CentOS 6 là thực tế là họ đang thiết lập các thuộc tính hệ thống tệp theo mặc định, vì vậy bây giờ bạn phải đi và xóa chúng.

Tôi đã thử chạy lệnh sau để loại bỏ các thuộc tính đó trong %postphần của mình , nhưng nó không có tác dụng gì.

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

Tập tin khởi động của tôi ở bên dưới trong trường hợp bạn thấy nó hữu ích:

#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/

Tôi chưa gặp vấn đề gì với việc vô hiệu hóa selinux khỏi các lần khởi động của mình trong EL5.x hoặc EL6. Là vấn đề mà bạn có vấn đề hệ thống tập tin sau khi cài đặt mới?
ewwhite

Không, sau khi cài đặt khởi động, SELinux vẫn được đặt thành 'thi hành' và các thuộc tính hệ thống tệp vẫn được đặt.
Zypher

@Zypher, FYI: Trong khổ %prethơ của bạn, bạn đang nối vào /tmp/nic-includevà sau đó ghi đè lên dòng tiếp theo.
Belmin Fernandez

@ BeamingMel-Bin oh yea, chỉ cần gỡ lỗi mã tôi quên lấy ra.
Zypher

Câu trả lời:


6

Trình cài đặt CentOS 6 tải các chính sách ở chế độ cho phép theo mặc định (mà tôi đã xác nhận bằng cách chạy dmesg trong khi cài đặt). Điều đó có nghĩa là qua bước cài đặt bài đăng, SELinux đã hoạt động. Miễn là nó đang chạy, có vẻ như bạn không thể xóa các thuộc tính.

Bạn sẽ phải vượt qua một nơi nào đó trước khi bắt đầu cài đặt (ngay ở cuối kernel của dòng bộ tải khởi động):

selinux=0

Vì vậy, một cái gì đó như thế này:

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

Đây là những gì xảy ra khi bạn cố gắng loại bỏ các thuộc tính trong khi ở chế độ cho phép (tha thứ cho định dạng, SF có vẻ không hài lòng):

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

Với selinux bị vô hiệu hóa từ grub khi khởi động:

[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

Dựa trên điều này cũng như báo cáo lỗi này , điều này có thể có nghĩa là bạn sẽ không thể xóa các thuộc tính trong cài đặt bài đăng. Vì vậy, như tôi đã phác thảo, bạn sẽ cần phải tắt selinux trước khi khởi động cài đặt.

(hoặc bạn chỉ có thể để nó một mình và học cách sống với nó. :)).


Điều này kết hợp với dòng sed từ bài viết của tôi làm việc như một nét duyên dáng!
Zypher

Chỉ tò mò, cho sự chỉnh sửa của riêng tôi: Tại sao cần phải loại bỏ các thuộc tính mở rộng còn lại của SELinux?
Rilindo

Tôi đã gặp phải vấn đề vì bất kỳ lý do gì khi các thuộc tính mở rộng + selinux tắt có nghĩa là các dịch vụ không thể đọc tệp - đặc biệt là khi kết hợp acls và nfs vào hỗn hợp. Giết các thuộc tính mở rộng và vấn đề biến mất
Zypher

2

'Nguyên nhân gốc rễ' của vấn đề là Anaconda thực hiện các thuộc tính selinux trong quá trình khởi động (sao cho việc vô hiệu hóa 'sau khi cài đặt' là quá muộn).

Tôi đã đặt các phương thức vô hiệu hóa trong các tệp cấu hình máy chủ (thực ra, chúng luôn ở đó):

tường lửa - đã tắt 
selinux - đã tắt

NHƯNG, cũng đã thêm chuỗi 'selinux = 0' vào tệp khởi động PXE:

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

linux mặc định
nhãn linux
  hạt nhân vmlinuz-rhel-6.4-x86_64
  chắp thêm load_ramdisk = 1 initrd = initrd.img-rhel-6.4-x86_64 mạng selinux = 0 ksdevice = eth0 ks = nfs: nolock, rsize = 1480, wsize = 1480: buildserver: /kickstart/

Sau khi xây dựng lại hệ thống, tất cả các ký hiệu 'dấu chấm' đã biến mất !!!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.