SELinux: capabilites{dac_override} 权限

Linux支持Capability的主要目的是细化root的特权,使一个进程能够以“最小权限原则”去执行任务。比如拿ping程序来说,它需要使用原始套接字(raw_sockets),如果没有Capability,那么它就需要使用root特权才能运行;如果有了Capability机制,由于该程序只需要一个CAP_NET_RAW的Capability即可运行,那么根据最小权限原则,该程序运行时可以丢弃所有多余的Capability,以防止被误用或被攻击。所以,Capability机制可以将root特权进行很好的细分,当前kernel(2.6.18)已支持30多种不同的Capability。注意在之前的kernel实现中,Capability只能由root进程持有,非root进程是不能保持任何Capability的。但是在2.6.24及以上的kernel版本中一个普通用户进程也将可以持有capability。

capabilities安全模型用来管理 root进程的权限集,防止root用户的任意妄为。而现在的capabilities 实际上是基于selinux LSM。因此,selinux 中class capability对应于Linux中的capabilities。

而dac_override ,则用来容许进程旁路的所有DAC权限:uid,gid,ACL 等等。

注意:capabilities 和 ACL (access control lists) 实际上是非常对称的两种权限控制模型:在capabilities,授权信息 绑定到主体,基于行(row);在ACL中,授权信息绑定到客体,基于列(column)。

定义

#Used to manage the Linux capabilities granted to root processes. 
#Taken from the header file: /usr/include/linux/capability.h
class capability
{
...
#Overrides all DAC including ACL execute access.
dac_override
...
}

在man capabilities中,该权限的对应描述是:

CAP_DAC_OVERRIDE:Bypass file read, write, and execute permission checks. (DAC is an abbreviation of “discretionary access control”.)

HOOK函数

//kernel/fs/namei
/**
 * generic_permission -  check for access rights on a Posix-like filesystem
 * @inode:      inode to check access rights for
 * @mask:       right to check 
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值