使用SELinux布尔值

已经探讨过文件访问时AVC拒绝。当经常使用SELinux会发现,有些活动按理应该被允许,却被拒绝了。当有些原因是依据某些因素(选择),将推荐SELinux策略作者将策略设置为可选的。SELinux中可选意味着访问权限通过SELinux布尔值触发。

SELinux布尔值是一个字符串(可赋予具体含义)来改变SELinux发挥作用。使用getsebool工具可以显示布尔值列表和当前值。

root #getsebool -a
abrt_anon_write--> off
abrt_handle_event--> off
allow_console_login--> on
allow_cvs_read_shadow--> off
...
以上输出被过滤了大部分,因为系统中把整个SELinux策略加载以后,不同的布尔值轻松达到200。系统管理员使用布尔值对策略行为进行开关调整。

获得布尔值信息

并不是所有布尔值都命名都能让人轻易读懂。使用semanage boolean –l可以知道布尔值的相关描述。

root #semanage boolean -l | grepabrt_anon_write
abrt_anon_write  (off ,  off)  Allow ABRT to modify public files
                                     used for public file transferservices.
布尔值的状态也在输出里显示了出来,当然也可以使用 getsebool工具或者读取SELinux文件系统中的伪文件(/sys/fs/selinux/booleans)来获取。 

布尔值修改了什么

当切换布尔值的时候,它改变了系统上的活动策略规则。之前使用sesearch工具搜索和显示存在的策略规则。它同时也可以显示SELinux布尔值的效果。

传递布尔值名字(--bool或-b)和—show_cond(或-C)选项,sesearch工具可以显示什么规则被影响了。例如,为了得到abrt_anon_write布尔值改变所触发的allow语句:

root #sesearch -b abrt_anon_write -AC
Found 3semantic av rules:
DT allow abrt_t public_content_rw_t : file { ioctl read write ...} ; [ abrt_anon_write ]
DT allow abrt_t public_content_rw_t : dir { ioctl read write ...} ; [ abrt_anon_write ]
DT allow abrt_t public_content_rw_t : lnk_file { ioctl read write ...} ; [ abrt_anon_write ]
命令的输出显示,现在,布尔值是 disabled D 规则最前面的字母),但是如果布尔值为 true T 是开头第二个字母)规则本身将会变成活动状态。如果布尔值为 enabled ,会显示 ET 。如果布尔值为 false ,语句本身将变为活动状态,则第二个字母将为 F

因为布尔值,建议最好加上-C参数来使用sesearch命令,这样如果某些问题是布尔值触发的,很容易被发觉和定位。很多情况下,切换布尔值对于系统继续工作是有效的。

比如,当你发现firefox浏览器不能读取用户文件,发现拒绝日志显示mozilla_t被拒绝读取user_home_t文件,使用sesearch命令帮助我们知道存在叫做mozilla_read_content的布尔值允许浏览器读取用户文件。

user $sesearch -s mozilla_t -t user_home_t-AC
Found 4semantic av rules:
   allow application_domain_typeuser_home_t : file { getattr append } ;
DT allowmozilla_t user_home_t : file { ioctl read getattr lock open } ; [mozilla_read_content ]
DT allowmozilla_t user_home_t : dir { ioctl read getattr lock search open } ;[ mozilla_read_content ]
DT allowmozilla_t user_home_t : lnk_file { read getattr } ; [mozilla_read_content ]

改变布尔值状态

改变SELinux布尔值可以通过setsebool(增加需要设置的布尔值,on或者off)或者使用togglesebool(翻转当前布尔值)实现。

root #setsebool abrt_anon_write on
root #togglesebool abrt_anon_write

当你完成这些命令,改变的值将会立刻生效,但是只在当前加载策略的活动期间。也就是说,如果系统重启,之前修改的将失效。或者当你直接地重新加载SELinux策略,之前的设置也会失效。换句话说,就是切换booleans这个方法快捷,它是帮助调试问题用的。

一些布尔值只是在调试时候用的。比如,allow_ptrace布尔值,当设置它时,允许管理的域ptrace进程(比如使用strace命令),管理员做的有些事情就是来调试程序中的bug。

布尔值修改持久生效

使用-P选项可以使,SELinux布尔值的修改持久生效。

root #setsebool -P abrt_anon_write on
这个命令要一会儿时间才能完成,因为SELinux策略本身需要重建、保存和布尔值也会被注册。一旦完成,布尔值将会一直为活动状态。

 

需要记住

1.        SELinux 支持布尔值动态更新运行时策略

2.        这些布尔值可被设置为重启后长久生效

3.        可以使用sesearch来显示布尔值的相关策略语句信息

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值