1. 程式人生 > >關於sed -i 修改selinux的問題

關於sed -i 修改selinux的問題

原文連結:http://blog.51cto.com/nightmoon/1383651

問題描述

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

# close selinux

setenforce 0 &&

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

當設定完畢後,檢視/etc/sysconfig/selinux的確是關閉了,但是當我準備臨時開啟selinux時問題出現:

[[email protected]~]$ setenforce 1

setenforce:SELinux is disabled

臨時開啟失敗了。經查詢,網路大神說當selinux關閉時,臨時開啟是提示關閉的。因此我又修改/etc/sysconfig/selinux,重啟系統後,發現selinux還是關閉狀態的。檢視日誌提示

wKiom1Mw7ZzC61SuAAJGP-0DFeM134.jpg系統在執行的時候就將selinux關閉了。但是配置檔案中明明是開啟啊。

[[email protected] ~]$ 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和重啟系統,它都不會生效。

 

解決辦法

[[email protected] ~]# rm -rf /etc/sysconfig/selinux刪除原軟連結檔案

[[email protected] sysconfig]# ln -s /etc/selinux/config/etc/sysconfig/selinux重新建立軟連結檔案

[[email protected] sysconfig]# ls -li |grep selinux 檢視軟連結檔案是否生效

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

[[email protected] 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狀態

[[email protected] ~]$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標籤,速度的快慢由系統檔案的多少和硬碟的速度決定。