溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行SELinux策略規(guī)則的開(kāi)啟和關(guān)閉

發(fā)布時(shí)間:2022-01-24 14:14:29 來(lái)源:億速云 閱讀:163 作者:柒染 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要為大家分析了如何進(jìn)行SELinux策略規(guī)則的開(kāi)啟和關(guān)閉的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì)易懂,操作細(xì)節(jié)合理,具有一定參考價(jià)值。如果感興趣的話,不妨跟著跟隨小編一起來(lái)看看,下面跟著小編一起深入學(xué)習(xí)“如何進(jìn)行SELinux策略規(guī)則的開(kāi)啟和關(guān)閉”的知識(shí)吧。

在一般情況下,所有的規(guī)則并不是都處于開(kāi)啟狀態(tài),我們不用學(xué)習(xí)怎樣修改規(guī)則的具體內(nèi)容,只需要知道開(kāi)啟和關(guān)閉的規(guī)則就可以。

規(guī)則的開(kāi)啟與關(guān)閉并不困難,使用 getsebool 命令來(lái)查詢規(guī)則的開(kāi)啟和關(guān)閉狀態(tài),使用 setsebool 命令來(lái)修改規(guī)則的開(kāi)啟與關(guān)閉狀態(tài)。

查詢策略規(guī)則是否開(kāi)啟

先來(lái)看看如何知道哪些規(guī)則是啟用的,哪些規(guī)則是關(guān)閉的。這時(shí)需要使用 getsebool 命令,命令格式如下:

[root@localhost ~]# getsebool [-a] [規(guī)則名]

-a 選項(xiàng)的含義是列出所有規(guī)則的開(kāi)啟狀態(tài)。

例如:

[root@localhost ~]# getsebool -a
abrt_anon_write –> off
abrt_handle_event –> off
allow_console_login –> on
allow_cvs_read_shadow –> off
allow_daemons_dump_core –> on
allow_daemons_use_tcp_wrapper –> off
…省略部分輸出…
#getsebool命令明確地列出了規(guī)則的開(kāi)啟狀態(tài)

除此之外,還可以使用 semanage boolean -l 命令(此命令需事先手動(dòng)安裝),此命令的輸出結(jié)構(gòu)同 getsebool 命令相比,輸出信息中多了默認(rèn)狀態(tài)、當(dāng)前狀態(tài)以及相關(guān)描述等信息。感興趣的讀者,可以自己嘗試運(yùn)行,觀看輸出結(jié)果。

修改規(guī)則的開(kāi)啟狀態(tài)

能夠查詢到規(guī)則的開(kāi)啟狀態(tài),我們使用 setsebool 命令就可以開(kāi)啟和關(guān)閉某個(gè)規(guī)則。當(dāng)然,我們先應(yīng)該通過(guò) sesearch 命令確認(rèn)這個(gè)規(guī)則的作用。

sesearch 命令格式如下:

[root@localhost ~]# setsebool [-P] 規(guī)則名=[0|1]

-P 選項(xiàng)的含義是將改變寫(xiě)入配置文件,永久生效。規(guī)則名有 2 個(gè)值,分別是 0 和 1,0 代表將該規(guī)則關(guān)閉,1 代表將該規(guī)則開(kāi)啟。

舉個(gè)例子:

[root@localhost ~]# getsebool -a | grep httpd
#查詢和apache相關(guān)的規(guī)則
…省略部分輸出…
httpd_enable_homedirs –> off
…省略部分輸出…
#發(fā)現(xiàn)httpd_enable_homedirs規(guī)則是開(kāi)啟的,這個(gè)規(guī)則主要用于允許apache進(jìn)程訪問(wèn)用戶的家目錄
#如果不開(kāi)啟這個(gè)規(guī)則,那么apache的userdir功能將不能使用
[root@localhost ~]# setsebool -P httpd_enable_homedirs=1
#開(kāi)啟httpd_enable_homedirs規(guī)則
[root@localhost ~]# getsebool httpd_enable_homedirs
httpd_enable_homedirs –> on
#查詢規(guī)則狀態(tài)是開(kāi)啟
[root@localhost ~]# setsebool -P httpd_enable_homedirs=0
#關(guān)閉規(guī)則
[root@localhost ~]# getsebool httpd_enable_homedirs
httpd_enable_homedirs –> off
#查詢規(guī)則狀態(tài)是關(guān)閉

SELinux導(dǎo)致vsftpd不能正常登錄

舉個(gè)實(shí)際的例子,vsftpd 是 CentOS 默認(rèn)的文件服務(wù)器,這個(gè)服務(wù)主要是用來(lái)進(jìn)行文件的下載和上傳的。不過(guò),如果啟動(dòng)了 SELinux,則會(huì)發(fā)現(xiàn) vsftpd 服務(wù)是不能登錄的。我們來(lái)做一個(gè)實(shí)驗(yàn),命令如下:

[root@localhost ~]# yum -y install vsftpd
#安裝vsftpd服務(wù)器端
[root@localhost ~]# yum -y install ftp
#安裝ftp命令,也就是ftp客戶端
[root@localhost ~]# useradd user
[root@localhost ~]# passwd user
#添加測(cè)試用戶,并配置密碼
[root@localhost ~]# service vsftpd start
#啟動(dòng)vsftpd服務(wù)
[root@localhost ~]# ftp 192.168.4.210
#登錄本機(jī)的ftp
Connected to 192.168.4.210 (192.168.4.210).2.0 (vsFTPd 2.2.2)
Name (192.168.4.210:root):user ←輸入用戶名
3.1 Please specify the password.
Password: ←輸入密碼
5.0 OOPS:cannot change directory:/home/user
Login failed.
#登錄報(bào)錯(cuò),不能正常登錄

這很奇怪,vsftpd 是只要安裝并啟動(dòng)就可以正常使用的,不用修改任何配置文件,因?yàn)槟J(rèn)配置是非常完善而且正確的。這時(shí)我們考慮是 SELinux 引起的問(wèn)題,可以使用前面章節(jié)中關(guān)于日志查看的三個(gè)命令中的任意一個(gè),來(lái)看看是否有關(guān)于 vsftpd 的報(bào)錯(cuò)。命令如下:

[root@localhost ~]# audit2why #分析SELinux的日志
type-AVC msg-audit(1370428985.525:1146) : avc: denied {search } for pid-28408 comm-“vsftpd” name=”home” dev=sda3    ino=1046530 scontext=unconfined_u:system_r:ftpd_t:s0-s0:c0.ol023
tcontext=system_u:object_r:home_root_t:s0 tclass=dir
#有關(guān)于vsftpd的錯(cuò).看來(lái)確實(shí)是SELinux引起的不能登陸 …省略部分輸出…
Was caused by:
One of the following booleans was set incorrectly.
Description:
Allow ftp servers to login to local users and read/write all files on the system, governed by DAC.
Allow access by executing:
# setsebool -P allow_ftpd_full_access 1
Description:
Allow ftp to read and write files in the user home directories
Allow access by executing:
#   setsebool -P ftp_home_dir 1
#建議執(zhí)行此命令,運(yùn)行ftp讀取和寫(xiě)入用戶的家目錄

既然給出了建議命令,我們就試試吧:

[root@localhost ~]# setsebool -P ftp_home_dir 1
#開(kāi)啟ftp_home_dir規(guī)則
[root@localhost ~]# ftp 192.168.4.210
Connected to 192.168.4.210 (192.168.4.210).2.0 (vsFTPd 2.2.2)
Name (192.168.4.210:root):user ←輸入用戶名
3.1 Please specify the password.
Password: ←輸入密碼
2.0 Login successful. 登錄成功

關(guān)于“如何進(jìn)行SELinux策略規(guī)則的開(kāi)啟和關(guān)閉”就介紹到這了,更多相關(guān)內(nèi)容可以搜索億速云以前的文章,希望能夠幫助大家答疑解惑,請(qǐng)多多支持億速云網(wǎng)站!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI