天天看點

關于sed -i 修改selinux的問題

問題描述:

近日,在測試優化腳本的時候遇到一個問題。腳本指令如下

# 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還是關閉狀态的。檢視日志提示

關于sed -i 修改selinux的問題

系統在運作的時候就将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指令後才發下如下提示

關于sed -i 修改selinux的問題

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.

SELINUX=disabled

# SELINUXTYPE= cantake one of these two values:

#targeted - Targeted processes areprotected,

#mls - Multi Level Security protection.

然後修改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.

警告的意思是說,selinux的targeted政策要求重新打标簽,應該是對系統所有的檔案打上一個selinux标簽,速度的快慢由系統檔案的多少和硬碟的速度決定。

經驗教訓:

從這個事故中讓我認識到了熟知指令參數意義的重要性,之前隻是知道sed -i可以修改檔案内容,卻忽略了後面的介紹。進而也讓我學到了另一個知識,當你用sed –i來修改檔案時,一定要修改源檔案,千萬不要修改它的硬連結或者軟連結檔案。防止破壞連結檔案後,自己還一無所知。