關於sed -i 修改selinux的問題


原文鏈接:https://home.cnblogs.com/blog/

問題描述

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

# 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.

警告的意思是說,selinux的targeted策略要求重新打標簽,應該是對系統所有的文件打上一個selinux標簽,速度的快慢由系統文件的多少和硬盤的速度決定。

經驗教訓

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

原文鏈接:https://home.cnblogs.com/blog/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM