關(guān)注公眾號(hào) “融碼一生”,領(lǐng)取全套 PDF / 電子書(shū)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-860820.html
- SELinux 管理過(guò)程中,進(jìn)程是否可以正確地訪問(wèn)文件資源取決于它們的安全上下文。進(jìn)程和文件都有自己的安全上下文,SELinux 會(huì)為進(jìn)程和文件添加安全信息標(biāo)簽(比如 SELinux 用戶、角色、類型、類別等),當(dāng)運(yùn)行 SELinux 后所有這些信息都將作為訪問(wèn)控制的依據(jù)。
- 查看文件和目錄的安全上下文:
# jy: 使用選項(xiàng) -Z 查看文件和目錄的安全上下文
ls -Z
:<<!
-rw-------.root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg
-rw-r--r--.root root system_u:object_r:admin_home_t:s0 install.log
-rw-r--r--.root root system_u:object_r:admin_home_t:s0 install.log.syslog
!
- 查看目錄的安全上下文需添加
-d
選項(xiàng)(代表目錄本身,而非目錄下的子文件):
ls -Zd /var/www/html/
:<<!
drwxr-xr-x.root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
!
- 查看進(jìn)程的安全上下文:
# 啟動(dòng) apache 服務(wù)
service httpd start
ps auxZ | grep httpd
:<<!
unconfined_u:system_r:httpd_t:s0 root 25620 0.0 0.5 11188 3304 ? Ss
03:44 0:02 /usr/sbin/httpd
…省略部分輸出…
!
- 只要進(jìn)程和文件的安全上下文匹配,該進(jìn)程就可以訪問(wèn)該文件資源。
- 安全上下文使用
:
分隔為 4 個(gè)字段,其實(shí)共有 5 個(gè)字段,最后一個(gè)“類別”字段是可選的:
#身份字段:角色:類型:靈敏度:[類別]
system_u:object_r:httpd_sys_content_t:s0:[類別]
- 以下對(duì)這 5 個(gè)字段的作用進(jìn)行說(shuō)明。
1、身份字段(user)
- 用于標(biāo)識(shí)該數(shù)據(jù)被哪個(gè)身份所擁有,相當(dāng)于權(quán)限中的用戶身份。這個(gè)字段并沒(méi)有特別的作用。常見(jiàn)的身份類型有 3 種:
-
-
root
:表示安全上下文的身份是 root -
system_u
:表示系統(tǒng)用戶身份,其中_u
代表 user -
user_u
:表示與一般用戶賬號(hào)相關(guān)的身份,其中_u
代表 user
-
- user 字段只用于標(biāo)識(shí)數(shù)據(jù)或進(jìn)程被哪個(gè)身份所擁有,一般系統(tǒng)數(shù)據(jù)的 user 字段是
system_u
,而用戶數(shù)據(jù)的 user 字段是user_u
。 - SELinux 中到底可以識(shí)別多少用戶身份字段?可以使用 seinfo 命令查詢(SELinux 的相關(guān)命令一般都以
se
開(kāi)頭):
-
seinfo [選項(xiàng)]
-
-
- 選項(xiàng):
-
-
-
-
-
-u
: 列出 SELinux 中所有的身份(user) -
-r
: 列出 SELinux 中所有的角色(role) -
-t
: 列出 SELinux 中所有的類型(type) -
-b
: 列出所有的布爾值(也就是策略中的具體規(guī)則名稱) -
-x
: 顯示更多的信息
-
-
-
- SELinux 中能夠識(shí)別的 user 身份共有 9 種:
seinfo -u
:<<!
Users:9
sysadm_u
system_u
xguest_u
root
guest_u
staff_u
user_u
unconfined_u
git_shell_u
!
2、角色(role)
- 主要用來(lái)表示此數(shù)據(jù)是進(jìn)程還是文件或目錄。該字段在實(shí)際使用中也不需要修改。
- 常見(jiàn)的角色有(
_r
代表 role):
-
-
object_r
:代表該數(shù)據(jù)是文件或目錄 -
system_r
:代表該數(shù)據(jù)是進(jìn)程
-
- 使用 seinfo 命令也可以查詢 SELinux 中的角色:
seinfo -r
:<<!
Roles:12
guest_r
staff_r
user_r
git_shell_r
logadm_r
object_r
sysadm_r
system_r
webadm_r
xguest_r
nx_server_r
unconfined_r
!
3、類型(type)
- 類型字段是安全上下文中最重要的字段,進(jìn)程是否可以訪問(wèn)文件主要就看進(jìn)程的安全上下文類型字段是否和文件的安全上下文類型字段相匹配,如果匹配則可以訪問(wèn)。
- 注意:類型字段在文件或目錄的安全上下文中被稱作類型(type),但在進(jìn)程的安全上下文中被稱作域(domain)。即:在主體(Subject)的安全上下文中這個(gè)字段被稱為域;在目標(biāo)(Object)的安全上下文中這個(gè)字段被稱為類型。域和類型需要匹配(進(jìn)程的類型要和文件的類型相匹配)才能正確訪問(wèn)。
- SELinux 中有多少類型也是通過(guò) seinfo 命令查詢:
seinfo -t | more
:<<!
Types:3488
#共有3488個(gè)類型
bluetooth_conf_t
cmirrord_exec_t
foghorn_exec_t
jacorb_port_t
sosreport_t
etc_runtime_t
…省略部分輸出…
!
- 已知 apache 進(jìn)程可以訪問(wèn)
/var/www/html/
(此目錄為 RPM 包安裝的 apache 的默認(rèn)網(wǎng)頁(yè)主目錄)目錄中的網(wǎng)頁(yè)文件,所以 apache 進(jìn)程的域和/var/www/html/
目錄的類型是匹配的,我們查詢一下:
ps auxZ | grep httpd
:<<!
unconfined_u:system_r:httpd_t:s0 root 25620 0.0 0.5 11188 3304 ? Ss
03:44 0:02 /usr/sbin/httpd
#apache進(jìn)程的域是httpd_t
!
[root@localhost ~]# ls -dZ /var/www/html/
drwxr-xr-x.root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
#/var/www/html/目錄的類型是httpd_sys_content_t
- apache 進(jìn)程的域是
httpd_t
,/var/www/html/
目錄的類型是httpd_sys_content_t
,這個(gè)主體的安全上下文類型經(jīng)過(guò)策略規(guī)則的比對(duì),是和目標(biāo)的安全上下文類型匹配的,所以 apache 進(jìn)程可以訪問(wèn)/var/www/html/
目錄。 - 在 SELinux 中最常遇到的問(wèn)題就是進(jìn)程的域和文件的類型不匹配,所以一定要掌握如何修改類型字段。
4、靈敏度
- 靈敏度一般用 s0、s1、s2 來(lái)命名,數(shù)字代表靈敏度的分級(jí)。數(shù)值越大代表靈敏度越高。
5、類別
- 類別字段不是必須有的,所以使用
ls
和ps
命令查詢時(shí)并沒(méi)有看到類別字段。 - 可以通過(guò) seinfo 命令來(lái)查詢:
# 查詢所有的user字段,并查看詳細(xì)信息
seinfo -u -x
:<<!
system_u
#user字段名
default level:s0
#默認(rèn)靈敏度
range:s0 - s0:c0.c1023
#靈敏度可以識(shí)別的類別
roles:
#該user能夠匹配的role(角色)
object_r
system_r
unconfined_r
!
關(guān)注公眾號(hào) “融碼一生”,領(lǐng)取全套 PDF / 電子書(shū)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-860820.html
到了這里,關(guān)于6.6.6、查看 SELinux 安全上下文的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!