结论
先结论:Android中的root进程,在使用到capability时,也需要在sepolicy中定义 allow capability规则,以申请capability permissions。
备注:如果不引入SELinux,例如在Ubuntu环境下,capability的主要作用不是对root进程本身直接施加限制,而是:通过授予最小的capability,使需要特权操作的程序,可以在非root状态下完成工作。
背景
在分析AndroidL的sepolicy规则时,我们发现,即使有效集和许可集满装的root进程,也仍需要在规则定义 allow capability权限。
以capability:dac_overrride为例,具有dac_override权限的系统服务主要包括:
ueventd.te(7):allow ueventd self:capability { chown mknod net_admin setgid fsetid sys_rawio dac_override fowner };
zygote.te(7):allow zygote self:capability { dac_override setgid setuid fowner c