關於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還是關閉狀態的。檢視日誌提示
系統在執行的時候就將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命令後才發下如下提示
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標籤,速度的快慢由系統檔案的多少和硬碟的速度決定。