Android Selinux 自定义Java系统服务

自定义一个java service,并添加到系统服务中。

我们主要就是围绕:允许自定义的应用,将自定义的服务,添加到系统服务中。

具体selinux的配置如下:

假设自定义服务的包名为com.test.myservice

自定义的系统服务为test_myservice

1. 为服务添加selinux上下文

# service_contexts
# 给test_myservice关联一个test_myserver的上下文

test_myservice u:object_r:test_myserver:s0

     定义和说明test_myserver

# service.te

type test_myserver, service_manager_type;

2. 为应用定义安全上下文

com.test.myservice本来就是system app,其实完全可以添加下面一句就完事儿:

allow system_app test_server:service_manager { find add };

但是如果这么做的话,就相当与允许了所有system_app来向系统注册test_server了,显然这样做是不合理的。

因此需要为com.test.myservice定义一个自己的selinux app上下文

# seapp_contexts

# 说明:
# user=system seinfo=platform 表示是系统应用,并有签名
# name: 应用包名
# domain:我们自己起的域名
# type:关联到system_app_data_file

user=system seinfo=platform name=com.test.myservice domain=testserver_app type=system_app_data_file

user=_app, seinfo=untrusted

untrusted_app 第三方app,没有Android平台签名,没有system权限;

user=_app, seinfo=platform

platform_app 有Android平台签名,没有system权限;

user=system, seinfo=platform

system_app 有android平台签名和system权限。

# testserver_app.te

type testserver_app, domain, coredomain;

# app_domain是一个宏定义,在public/te_macros中,
# 这个宏主要给我们填写的参数关联到appdomain, 系统的Selinux会给appdomain定义一系列权限和规则

app_domain(testserver_app)

allow testserver_app test_server:service_manager { find add };
3. 编译

将上面的四个文件放到某个目录下,比如/device/test/sepolicy/mytest/下,

在.mk中追加:

BOARD_SEPOLICY_DIRS := \

        device/test/sepolicy/mytest 

make selinux_policy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值