'selinux --disabled'를 무시한 CentOS 6 킥 스타트


8

나는 이것과 조금 싸우고 있었고 CentOS 6에서 selinux --disabled지시를 무시하는 한 아나콘다까지 회귀가있는 것처럼 보입니다 . 이것은 RHEL 4.8 에서 처음 나타난 후 RHEL 5.6 에서 다시 나타납니다 .

이전 릴리스에서는 sed 문을 %post지시문에 추가하여 비활성화합니다.

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

내가 겪고있는 문제는 RHEL / CentOS 6의 새로운 기능은 기본적으로 파일 시스템 속성을 기본 설정하고 있다는 것입니다.

%post섹션 에서 해당 속성을 제거하기 위해 다음 명령을 실행하려고 시도했지만 아무런 영향을 미치지 않습니다.

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

도움이되는 경우를 대비하여 내 킥 스타트 파일은 다음과 같습니다.

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

EL5.x 또는 EL6의 킥 스타트에서 selinux를 비활성화하는 데 아무런 문제가 없었습니다. 새로 설치 한 후에 파일 시스템 문제가있는 문제입니까?
ewwhite

킥 스타트 설치 후에 SELinux는 여전히 'enforcecing'으로 설정되어 있고 파일 시스템 속성은 여전히 ​​설정되어 있습니다.
Zypher

@Zypher, FYI : %pre스탠자 /tmp/nic-include에서 다음 줄에 추가하고 클로버 합니다.
벨민 페르난데스

@ BeamingMel-Bin 아, 그냥 디버깅 코드를 꺼내는 것을 잊었습니다.
Zypher

답변:


6

CentOS 6 설치 프로그램은 기본적으로 정책을 허용 모드로로드합니다 (설치 중에 dmesg를 실행하여 확인했습니다). 설치 후 단계에서 SELinux는 이미 활성화되어 있습니다. 실행 중이면 속성을 제거 할 수있는 것처럼 보이지 않습니다.

설치를 시작하기 전에 다음을 통과해야합니다 (커널의 끝에서 부트 로더 라인).

selinux=0

그래서 이런 식으로 :

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

다음은 허용 모드에서 속성을 제거하려고 할 때 발생하는 현상입니다 (서식을 용서하면 SF가 불행한 것으로 보입니다).

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

부팅시 glinux에서 selinux를 비활성화 한 상태 :

[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

이 버그 보고서 뿐만 아니라 이것도 바탕으로 설치 후 속성을 제거 할 수 없음을 의미합니다. 앞에서 설명한 것처럼 설치를 부팅하기 전에 selinux를 비활성화해야합니다.

(또는 당신은 그냥 내버려두고 함께 사는 법을 배울 수 있습니다. :)).


이것은 내 게시물의 sed 라인과 결합하여 매력처럼 작동했습니다!
Zypher

내 자신의 교육에 대해 궁금한 점이 있습니다. SELinux가 남긴 확장 속성을 제거해야하는 이유는 무엇입니까?
Rilindo

확장 된 속성 + selinux가 꺼져있을 때 어떤 이유로 든 서비스가 파일을 읽을 수 없다는 것을 의미합니다. 특히 acls와 nfs를 믹스에 결합 할 때. 확장 된 속성을 제거하면 문제가 사라집니다
Zypher

2

문제의 근본 원인은 Anaconda가 킥 스타트 프로세스 중에 selinux 속성을 구현한다는 것입니다 ( '설치 후'비활성화가 너무 늦음).

비활성화 방법을 호스트 구성 파일에 배치했습니다 (실제로 항상 존재했습니다).

방화벽-비활성화 
selinux-비활성화

그러나 'selinux = 0'문자열을 PXE 부팅 파일에 추가했습니다.

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

기본 리눅스
리눅스 레이블
  커널 vmlinuz-rhel-6.4-x86_64
  load_ramdisk = 1 initrd = initrd.img-rhel-6.4-x86_64 네트워크 selinux = 0 ksdevice = eth0 ks = nfs : nolock, rsize = 1480, wsize = 1480 : buildserver : /kickstart/host-configs/myserver-ks.cfg 추가

시스템을 재 구축 한 후 모든 '점'표기가 사라졌습니다 !!!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.