Linux命令 restorecon - 恢復文件的安全上下文

2022-03-18 17:52 更新

restorecon

恢復文件的安全上下文

補充說明

restorecon命令 用來恢復SELinux文件屬性即恢復文件的安全上下文。

語法

restorecon [-iFnrRv] [-e excludedir ] [-o filename ] [-f filename | pathname...]

選項

-i:忽略不存在的文件。
-f:infilename 文件 infilename 中記錄要處理的文件。
-e:directory 排除目錄。
-R/-r:遞歸處理目錄。
-n:不改變文件標簽。
-o/outfilename:保存文件列表到 outfilename,在文件不正確情況下。
-v:將過程顯示到屏幕上。
-F:強制恢復文件安全語境。

實例

假設CentOS安裝了apache,網(wǎng)頁默認的主目錄是/var/www/html,我們經(jīng)常遇到這樣的問題,在其他目錄中創(chuàng)建了一個網(wǎng)頁文件,然后用mv移動到網(wǎng)頁默認目錄/var/www/html中,但是在瀏覽器中卻打不開這個文件,這很可能是因為這個文件的SELinux配置信息是繼承原來那個目錄的,與/var/www/html目錄不同,使用mv移動的時候,這個SELinux配置信息也一起移動過來了,從而導致無法打開頁面,具體請看下面的實例:

使用CentOS舉例,如果默認沒有安裝apache,確保網(wǎng)絡連接,使用下面的命令安裝

[root@jsdig.com ~]# yum install httpd
 # 我們在root的家目錄新建一個html文件 
[root@jsdig.com ~]# pwd
/root

[root@jsdig.com ~]# vi index.html

# 隨便輸入一段文字,保存退出 
welcome to www.jsdig.com

# 將這個文件mv到網(wǎng)頁默認目錄下 
[root@jsdig.com ~]# mv index.html /var/www/html/

# 
# 這個時候我們使用firefox瀏覽器輸入127.0.0.1/index.html發(fā)現(xiàn)打不開,
# 查看一下SELinux的日志文件,發(fā)現(xiàn)了下面這一段報錯信息,從這個報錯信息不難看出,
# 進程httpd訪問網(wǎng)頁主目錄中的index.html時被SELinux阻止,原因是因為,SELinux配置信息不正確,
# 正確的SELinux配置信息應該是scontext=后面的部分,
# 而index.html文件的SELinux配置信息卻是tcontext=后面的部分,
# 從tcontext=的第三段“admin_home_t”不難看出,這個文件的SELinux配置信息是root用戶家目錄的。
# 
type=AVC msg=audit(1378974214.610:465): avc:  denied  { open } for  pid=2359 comm="httpd" path="/var/www/html/index.html" dev="sda1" ino=1317685 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file

使用ls -Z也可以看出,文件和目錄的SELinux信息不匹配

[root@jsdig.com html]# ls -Z /var/www/html/
.... unconfined_u:object_r:admin_home_t:s0 index.html

[root@jsdig.com html]# ls -Zd /var/www/html/
.... system_u:object_r:httpd_sys_content_t:s0 /var/www/html/

使用restorecon來恢復網(wǎng)頁主目錄中所有文件的SELinux配置信息(如果目標為一個目錄,可以添加-R參數(shù)遞歸)

[root@jsdig.com html]# restorecon -R /var/www/html/


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號