[Android]设置进程的安全上下文


为了能够清楚的理解进程的上下文,我们来做一个试验,

通过在rc文件中进行注册启动一个进程,即让init进程来fork出一个进程。


以/system/bin/service程序为例,我们在里面增加一个长时间的sleep,以便于我们观察。

增加service.te

#service.te

typemTestService, domain, domain_deprecated, mlstrustedsubject;

typemTestService_exec, exec_type, file_type;

 

这里是关键操作,进行domain的转换

init_daemon_domain(mTestService)

init_daemon_domain(mTestService)

也可以使用

domain_auto_trans(init,mTestService _exec, mTestService)

domain_auto_trans可以设置3个参数,能力更强,如

domain_auto_trans(init, vold_exec, vold)

 

在rc文件中增加

servicetest /system/bin/service

    class main

    user system

    group system

    oneshot

 

file_contexts中增加

/system/bin/service                   u:object_r:mTestService_exec:s0

 

$ ps-Z|grep service

u:r:mTestService:s0         system    507  1     20944  2296 hrtimer_na 0000000000 S /system/bin/service



通过这样的例子,我们就可以理解进程的上下文是怎么设置的了。


另外,如果我们仅仅在rc中进行服务的启动设置,而不设置进程的context,如

typemTestService, domain, domain_deprecated, mlstrustedsubject;

typemTestService_exec, exec_type, file_type;


那么,服务会启动失败,在kernel log中可以看到

01-01 12:04:02.485116     1     1 I [   47.650641] (2)[1:init]: init: processing action
01-01 12:04:02.486634     1     1 I [   47.652159] (2)[1:init]: init: computing context for service 'servicetest'
01-01 12:04:02.487863     1     1 E [   47.653388] (2)[1:init]: init: service servicetest does not have a SELinux domain defined

 


 




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值