Selinux权限介绍

一,DAC和MAC

DAC:自主访问权限控制。Android 是基于Liunx的操作系统,在Liunx中,有用户和用户组的概念。一个文件可以规定为:拥有它的用户具有什么权限,和它同组的用户具有什么权限以及其它的用户具有什么权限。我们可以通过chmod来改变访问它所需的权限。

MAC:强制访问权限控制。当一个主体(进程)访问一个客体(资源)时,需要通过策略文件的规定,才能进行访问。这样可以实现权限更细化的管控,Seliunx就是属于MAC中的一种

二,策略文件

在Android中,Seliunx的策略文件是te文件,比如app_zygote.te。语句示例如下

allow platform_app system_file:dir r_dir_perms;

从字面意思也很好理解,就是允许platform_app 对 mnt_media_rw_file的dir 具有r_dir_perms的权限。可以看出,这里对主体(platform_app )访问客体(system_file)的子项(比如文件夹)的某项权限都进行了精确的规定

三,安全上下文

上面的 platform_app/system_file分别都代表什么呢?这就要引入安全上下文(Security Contex),通俗讲就是标签。
对于主体,一般来说是进程,可以通过ps -Z 来查看

u:r:platform_app:s0:c512,c768  u0_a17    757   232   1091840 145720 SyS_epoll_ b3b997a4 S com.android.systemui
u:r:platform_app:s0:c512,c768  u0_a6     1209  232   996084 58340 SyS_epoll_ b3b997a4 S android.ext.services
u:r:platform_app:s0:c512,c768  u0_a8     1539  232   997912 59768 SyS_epoll_ b3b997a4 S com.android.managedprovisioning
u:r:platform_app:s0:c512,c768  u0_a49    1595  232   1013920 76988 SyS_epoll_ b3b997a4 S com.xiaojia.powertimer
u:r:platform_app:s0:c512,c768  u0_a49    1867  1595  3556   1620  sigsuspend ad1edaec S sh
u:r:platform_app:s0:c512,c768  u0_a49    1869  1867  4012   1676  __skb_recv b16729d8 S logcat

可以看出很多系统APP都被打上了这个标签,即安全上下文都是platform_app。
对于客体,可以通过 ls -Z 来查看

u:object_r:system_file:s0       system
u:object_r:system_file:s0       vendor

可以看出 system目录和vendor目录都被打上了system_file的标签,即安全上下文是system_file。

四,安全服务

上面命令查看的都是系统起来之后的,主体和客体已经和安全上下文进行了关联。实际上安全上下文是写在一个文件中的,如file_context。将主体和客体和安全上下文进行关联(意思就是打上标签),这项工作是安全服务来做的。常见的安全服务有:init,zygote 和PMS。

五,Seliunx 常见的命令

setenforce:临时关闭或者打开安全策略
getenforce:获取当前安全策略
chcon: 临时修改安全上下文
restorecon:恢复默认
getprop -Z : 查看属性的安全上下文
load_policy : 加载二进制策略文件,临时性的操作,重启无效, 一般用于调试,如重新编译了策略文件, 替换新的策略二进制文件, 可以重新让系统加载策略文件

总结

Seliunx 用户空间的框架由安全服务、安全上下文、安全策略组成。这里说的是用户空间,是因为Seliunx的权限检查还是由内核完成的。用户空间将上下文和策略写给内核,内核来完成检查。最后附上罗大神的框架图

在这里插入图片描述

用户空间可以通过libseliunx库和内核进行交互。 内核提供给上层的设备节点在sys/fs/seliunx/ 目录下。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值