聊聊Restorecon 命令使用實(shí)例
當(dāng)你將自定義文件添加到已經(jīng)由SELinux策略管理的目錄中時(shí),如果自定義文件沒有適當(dāng)?shù)腟ELinux上下文,那么將不會得到預(yù)期的結(jié)果。restorerecon命令的意思是恢復(fù)SELinux上下文。restorecon命令將文件和目錄的SELinux安全上下文重置為默認(rèn)值。這只會重置SELinux上下文的類型屬性。
1. 恢復(fù)文件的SELinux上下文
在以下示例中,index.html文件在SELinux上下文中具有“user_home_t”上下文類型。這個(gè)上下文類型,apache服務(wù)將無法訪問。
- [root@localhost ~]# ll -Z /var/www/html/index.html
- -rw-rw-r--. root root unconfined_u:object_r:user_home_t:s0 13 Jan 7 11:14 /var/www/html/index.html
注意:
上面的ls命令中的-Z選項(xiàng)將顯示特定文件的SELinux上下文。當(dāng)我們使用restorecon命令時(shí),我們實(shí)際上不需要知道文件的原始安全上下文。restorecon會自動(dòng)修正。
以下示例將把index.html的安全性上下文恢復(fù)為適當(dāng)?shù)闹?。如下所示,它已將SELinux上下文的類型重置為“httpd_sys_content_t”, 現(xiàn)在apache將能夠?yàn)樵撐募峁┓?wù),而不會出現(xiàn)任何錯(cuò)誤。
- [root@localhost ~]# restorecon /var/www/html/index.html
- [root@localhost ~]# ll -Z /var/www/html/index.html
- -rw-r--r--. 1 root root unconfined_u:object_r:httpd_sys_content_t:s0 13 Jan 7 11:14 /var/www/html/index.html
2. 更改安全上下文時(shí)輸出信息
默認(rèn)情況下,執(zhí)行restorecon命令時(shí),它不會提示是否更改了文件的安全上下文。
- [root@localhost ~]# restorecon -v /var/www/html/index.html
- Relabeled /var/www/html/index.html from unconfined_u:object_r:admin_home_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
3. 使用通配符處理多個(gè)對象
下面實(shí)例將修改目錄下面所有文件的安全上下文。
- [root@localhost ~]# restorecon -v /var/www/html/*
4. 遞歸處理文件和目錄
還可以使用-R選項(xiàng)遞歸重置文件的安全上下文。
- [root@localhost ~]# restorecon -Rv /var/www/html/
- Relabeled /var/www/html/sales from unconfined_u:object_r:admin_home_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
- Relabeled /var/www/html/sales/graph.html from unconfined_u:object_r:admin_home_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
5. 根據(jù)輸入文件還原上下文
可以將需要恢復(fù)安全上下文的文件或文件夾路徑保存在文件里,使用-f選項(xiàng)指定文件,來恢復(fù)。在下面的/var/www/html/testdir目錄和下面的指定的文件需要恢復(fù)默認(rèn)安全上下文:
首先創(chuàng)建一個(gè)文件input.txt,在里面填入需要恢復(fù)默認(rèn)安全上下文的目錄或者文件的完整路徑。
- [root@localhost ~]# vim input.txt
- [root@localhost ~]# cat input.txt
- /var/www/html/testdir
- /var/www/html/testdir/file1.txt
- /var/www/html/testdir/file3.txt
- /var/www/html/testdir/file5.txt
- /var/www/html/testdir/file7.txt
- /var/www/html/testdir/file9.txt
下面使用restorecon來恢復(fù):
- [root@localhost ~]# restorecon -Rvf input.txt
- Relabeled /var/www/html/testdir from unconfined_u:object_r:admin_home_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
- Relabeled /var/www/html/testdir/file1.txt from unconfined_u:object_r:admin_home_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
- Relabeled /var/www/html/testdir/file2.txt from unconfined_u:object_r:admin_home_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
- Relabeled /var/www/html/testdir/file3.txt from unconfined_u:object_r:admin_home_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
- Relabeled /var/www/html/testdir/file4.txt from unconfined_u:object_r:admin_home_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
- Relabeled /var/www/html/testdir/file5.txt from unconfined_u:object_r:admin_home_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
- Relabeled /var/www/html/testdir/file6.txt from unconfined_u:object_r:admin_home_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
- Relabeled /var/www/html/testdir/file7.txt from unconfined_u:object_r:admin_home_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
- Relabeled /var/www/html/testdir/file8.txt from unconfined_u:object_r:admin_home_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
- Relabeled /var/www/html/testdir/file9.txt from unconfined_u:object_r:admin_home_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
- Relabeled /var/www/html/testdir/file10.txt from unconfined_u:object_r:admin_home_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
6. 排除某個(gè)目錄
還可以使用-e選項(xiàng)排除不需要恢復(fù)安全上下文的目錄。
在以下示例中,我們正在處理/var/www/html 目錄下的所有文件,但不包括/var/www/html/sales子目錄中的文件。
- [root@localhost html]# restorecon -e /var/www/html/sales -Rv /var/www/html
還可以提供多個(gè)-e選項(xiàng)來排除多個(gè)文件或文件夾。
總 結(jié)
restorecon命令將文件和目錄的SELinux安全上下文重置為默認(rèn)值。這只會重置SELinux上下文的類型屬性。
本文轉(zhuǎn)載自微信公眾號「Linux就該這么學(xué)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Linux就該這么學(xué)公眾號。