问题描述

近日,在测试优化脚本的时候遇到一个问题。脚本命令如下

# close selinux

setenforce 0 &&

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g'/etc/sysconfig/selinux

当设置完毕后,查看/etc/sysconfig/selinux的确是关闭了,但是当我准备临时开启selinux时问题出现:

[slothbear@bear~]$ setenforce 1

setenforce:SELinux is disabled

临时开启失败了。经查询,网络大神说当selinux关闭时,临时开启是提示关闭的。因此我又修改/etc/sysconfig/selinux,重启系统后,发现selinux还是关闭状态的。查看日志提示

wKiom1Mw7ZzC61SuAAJGP-0DFeM134.jpg系统在运行的时候就将selinux关闭了。但是配置文件中明明是开启啊。

[slothbear@bear ~]$ cat /etc/selinux/config


# This file controls the state of SELinux on thesystem.

# SELINUX= can take one of these three values:

#enforcing- SELinux security policy is enforced.

#permissive- SELinux prints warnings instead of enforcing.

#disabled - No SELinux policy is loaded.

SELINUX=enforcing                                             此处设置开启

# SELINUXTYPE= can take one of these two values:

#targeted -Targeted processes are protected,

#mls -Multi Level Security protection.

SELINUXTYPE=targeted

绞尽脑汁,从开始设置脚本查起,在man sed命令后才发下如下提示

wKiom1Mw7lLT4ropAAEiY1-DPC8118.jpg

sed –i会破坏原有文件的的软链接或硬链接。

搞到这里才彻底明白,原来我在用脚本修改/etc/sysconfig/selinux文件后。它已经不在是/etc/selinux/config的链接文件,从而变成了一个普通文件,因此无论你在如何修改/etc/sysconfig/selinux和重启系统,它都不会生效。


解决办法

[root@bear ~]# rm -rf /etc/sysconfig/selinux删除原软链接文件

[root@bear sysconfig]# ln -s /etc/selinux/config/etc/sysconfig/selinux重新创建软链接文件

[root@bear sysconfig]# ls -li |grep selinux 查看软链接文件是否生效

74 lrwxrwxrwx1 root root19 Mar 23 02:48 selinux -> /etc/selinux/config

[root@bear sysconfig]# cat /etc/sysconfig/selinux查看软链接文件内容是否和源文件一样


# This filecontrols the state of SELinux on the system.

# SELINUX= can takeone of these three values:

#enforcing - SELinux security policyis enforced.

#permissive - SELinux prints warningsinstead of enforcing.

#disabled - No SELinux policy is loaded.

SELINUX=disabled

# SELINUXTYPE= cantake one of these two values:

#targeted - Targeted processes areprotected,

#mls - Multi Level Security protection.

SELINUXTYPE=targeted

然后修改SELINUX= enforcing,重启系统后插叙selinux状态

[slothbear@bear ~]$getenforce

Enforcing

selinux起来了,说明配置文件生效了。

重启时会出现如下提示:

***Warning -- SELinux targeted policy relabel is required.

***Relabeling could take a very long time, depending on file

***system size and speed of hard drives.

警告的意思是说,selinuxtargeted策略要求重新打标签,应该是对系统所有的文件打上一个selinux标签,速度的快慢由系统文件的多少和硬盘的速度决定。

经验教训

从这个事故中让我认识到了熟知命令参数意义的重要性,之前只是知道sed -i可以修改文件内容,却忽略了后面的介绍。从而也让我学到了另一个知识,当你用sed –i来修改文件时,一定要修改源文件,千万不要修改它的硬链接或者软链接文件。防止破坏链接文件后,自己还一无所知。