国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

SELinux策略規則的啟動和關閉詳解版

2024-08-27 23:56:08
字體:
來源:轉載
供稿:網友
  默認情況下,并不是所有的規則都處于開啟狀態,因此,雖然我們無需修改規則的具體內容,但學習如何開啟和關閉規則,還是很有必要的。
 
  規則的開啟與關閉并不困難,使用 getsebool 命令來查詢規則的開啟和關閉狀態,使用 setsebool 命令來修改規則的開啟與關閉狀態。
 
  查詢策略規則是否開啟
 
  先來看看如何知道哪些規則是啟用的,哪些規則是關閉的。這時需要使用 getsebool 命令,命令格式如下:
 
  [root@localhost ~]# getsebool [-a] [規則名]
 
  -a 選項的含義是列出所有規則的開啟狀態。
 
  例如:
 
  [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命令明確地列出了規則的開啟狀態
 
  除此之外,還可以使用 semanage boolean -l 命令(此命令需事先手動安裝),此命令的輸出結構同 getsebool 命令相比,輸出信息中多了默認狀態、當前狀態以及相關描述等信息。感興趣的讀者,可以自己嘗試運行,觀看輸出結果。
 
  修改規則的開啟狀態
 
  能夠查詢到規則的開啟狀態,我們使用 setsebool 命令就可以開啟和關閉某個規則。當然,我們先應該通過 sesearch 命令確認這個規則的作用。
 
  sesearch 命令格式如下:
 
  [root@localhost ~]# setsebool [-P] 規則名=[0|1]
 
  -P 選項的含義是將改變寫入配置文件,永久生效。規則名有 2 個值,分別是 0 和 1,0 代表將該規則關閉,1 代表將該規則開啟。
 
  舉個例子:
 
  [root@localhost ~]# getsebool -a | grep httpd
 
  #查詢和apache相關的規則
 
  …省略部分輸出…
 
  httpd_enable_homedirs --> off
 
  …省略部分輸出…
 
  #發現httpd_enable_homedirs規則是開啟的,這個規則主要用于允許apache進程訪問用戶的家目錄
 
  #如果不開啟這個規則,那么apache的userdir功能將不能使用
 
  [root@localhost ~]# setsebool -P httpd_enable_homedirs=1
 
  #開啟httpd_enable_homedirs規則
 
  [root@localhost ~]# getsebool httpd_enable_homedirs
 
  httpd_enable_homedirs --> on
 
  #查詢規則狀態是開啟
 
  [root@localhost ~]# setsebool -P httpd_enable_homedirs=0
 
  #關閉規則
 
  [root@localhost ~]# getsebool httpd_enable_homedirs
 
  httpd_enable_homedirs --> off
 
  #查詢規則狀態是關閉
 
  SELinux導致vsftpd不能正常登錄
 
  舉個實際的例子,vsftpd 是 CentOS 默認的文件服務器,這個服務主要是用來進行文件的下載和上傳的。不過,如果啟動了 SELinux,則會發現 vsftpd 服務是不能登錄的。我們來做一個實驗,命令如下:
 
  [root@localhost ~]# yum -y install vsftpd
 
  #安裝vsftpd服務器端
 
  [root@localhost ~]# yum -y install ftp
 
  #安裝ftp命令,也就是ftp客戶端
 
  [root@localhost ~]# useradd user
 
  [root@localhost ~]# passwd user
 
  #添加測試用戶,并配置密碼
 
  [root@localhost ~]# service vsftpd start
 
  #啟動vsftpd服務
 
  [root@localhost ~]# ftp 192.168.4.210
 
  #登錄本機的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.
 
  #登錄報錯,不能正常登錄
 
  這很奇怪,vsftpd 是只要安裝并啟動就可以正常使用的,不用修改任何配置文件,因為默認配置是非常完善而且正確的。這時我們考慮是 SELinux 引起的問題,可以使用前面章節中關于日志查看的三個命令中的任意一個,來看看是否有關于 vsftpd 的報錯。命令如下:
 
  [root@localhost ~]# audit2why < /var/log/audit/audit.log
 
  #分析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
 
  #有關于vsftpd的錯.看來確實是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
 
  #建議執行此命令,運行ftp讀取和寫入用戶的家目錄
 
  既然給出了建議命令,我們就試試吧:
 
  [root@localhost ~]# setsebool -P ftp_home_dir 1
 
  #開啟ftp_home_dir規則
 
  [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. ←登錄成功
 
  通過這個例子,我們學習了如何通過日志來解決因為規則沒有開啟而導致的 SELinux 問題。
 

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黔西县| 锡林郭勒盟| 民县| 内丘县| 昌邑市| 潞西市| 临澧县| 尚义县| 武威市| 伊吾县| 曲靖市| 贡山| 古蔺县| 台北县| 东山县| 雷州市| 丰城市| 阜阳市| 吴堡县| 盐亭县| 玛纳斯县| 南城县| 辛集市| 贺州市| 抚顺市| 神农架林区| 汕尾市| 金山区| 九江县| 鄄城县| 山西省| 阜城县| 丹阳市| 包头市| 高清| 浮山县| 永福县| 洛阳市| 奎屯市| 营口市| 河东区|