CentOS 6のキックスタートで「selinux --disabled」を無視


8

私はこれと少しの間戦っていましたが、アナコンダがselinux --disabledディレクティブを無視している限り、CentOS 6にはリグレッションがあったようです。これは、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は「enforcing」に設定されており、ファイルシステム属性も設定されています。
Zypher

@Zypher、FYI:%pre追加するスタンザ/tmp/nic-includeで、次の行にそれを破壊します。
ベルミンフェルナンデス2011

@ BeamingMel-Binああそう、私が取り出すのを忘れたコードをデバッグするだけです。
Zypher、2011

回答:


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

起動時にselinuxをgrubから無効にした場合:

[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 offがサービスがファイルを読み取れないことを意味する問題に遭遇しました-特にaclsとnfsを組み合わせた場合。拡張属性を
削除

2

この問題の「根本的な原因」は、Anacondaがキックスタートプロセス中にselinux属性を実装することです(「インストール後」の無効化が遅すぎるなど)。

ホスト構成ファイルに無効化メソッドを配置しました(実際には、常にそこにありました)。

ファイアウォール-無効化
selinux-無効化

しかし、PXEブートファイルに 'selinux = 0'文字列も追加しました。

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

デフォルトのLinux
ラベルLinux
  カーネルvmlinuz-rhel-6.4-x86_64
  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を追加します

システムを再構築した後、すべての「ドット」表記はなくなりました!!!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.