restorecon
恢復文件的安全上下文
補充說明
restorecon命令 用來恢復SELinux文件屬性即恢復文件的安全上下文。
語法
1restorecon [-iFnrRv] [-e excludedir ] [-o filename ] [-f filename | pathname...]
選項
1-i:忽略不存在的文件。
2-f:infilename 文件 infilename 中記錄要處理的文件。
3-e:directory 排除目錄。
4-R/-r:遞歸處理目錄。
5-n:不改變文件標籤。
6-o/outfilename:保存文件列表到 outfilename,在文件不正確情況下。
7-v:將過程顯示到屏幕上。
8-F:強制恢復文件安全語境。
實例
假設CentOS安裝了apache,網頁默認的主目錄是/var/www/html
,我們經常遇到這樣的問題,在其他目錄中創建了一個網頁文件,然後用mv移動到網頁默認目錄/var/www/html
中,但是在瀏覽器中卻打不開這個文件,這很可能是因爲這個文件的SELinux配置信息是繼承原來那個目錄的,與/var/www/html
目錄不同,使用mv移動的時候,這個SELinux配置信息也一起移動過來了,從而導致無法打開頁面,具體請看下面的實例:
使用CentOS舉例,如果默認沒有安裝apache,確保網絡連接,使用下面的命令安裝
1[root@jsdig.com ~]# yum install httpd
2 # 我們在root的家目錄新建一個html文件
3[root@jsdig.com ~]# pwd
4/root
5
6[root@jsdig.com ~]# vi index.html
7
8# 隨便輸入一段文字,保存退出
9welcome to www.jsdig.com
10
11# 將這個文件mv到網頁默認目錄下
12[root@jsdig.com ~]# mv index.html /var/www/html/
13
14#
15# 這個時候我們使用firefox瀏覽器輸入127.0.0.1/index.html發現打不開,
16# 查看一下SELinux的日誌文件,發現了下面這一段報錯信息,從這個報錯信息不難看出,
17# 進程httpd訪問網頁主目錄中的index.html時被SELinux阻止,原因是因爲,SELinux配置信息不正確,
18# 正確的SELinux配置信息應該是scontext=後面的部分,
19# 而index.html文件的SELinux配置信息卻是tcontext=後面的部分,
20# 從tcontext=的第三段“admin_home_t”不難看出,這個文件的SELinux配置信息是root用戶家目錄的。
21#
22type=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信息不匹配
1[root@jsdig.com html]# ls -Z /var/www/html/
2.... unconfined_u:object_r:admin_home_t:s0 index.html
3
4[root@jsdig.com html]# ls -Zd /var/www/html/
5.... system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
使用restorecon來恢復網頁主目錄中所有文件的SELinux配置信息(如果目標爲一個目錄,可以添加-R參數遞歸)
1[root@jsdig.com html]# restorecon -R /var/www/html/
來源:https://github.com/jaywcjlove/linux-command
最後修改於: Wednesday, January 31, 2024
版權申明:
- 未標註來源的內容皆為原創,未經授權請勿轉載(因轉載後排版往往錯亂、內容不可控、無法持續更新等);
- 非營利為目的,演繹本博客任何內容,請以'原文出處'或者'參考鏈接'等方式給出本站相關網頁地址(方便讀者)。