Android: 启动init.rc 中service的权限问题【转】
转自:http://www.linuxidc.com/Linux/2011-04/35014.htm
通过property_set("ctl.start", service_xx);
来启动init.rc中的service是一个很方便方法来调用某个可执行程序或某个脚本程序
service service_xx /system/bin/xx
disabled
oneshot
但在非AID_ROOT、AID_SYSTEM 用户的进程中调用ctl.start ctl.stop会碰到权限问题:
system/core/init/property_service.c
/*
* White list of UID that are allowed to start/stop services.
* Currently there are no user apps that require.
*/
struct {
const char *service;
unsigned int uid;
unsigned int gid;
} control_perms[] = {
{ "dumpstate",AID_SHELL, AID_LOG },
{NULL, 0, 0 }
};
/*
* Checks permissions for starting/stoping system services.
* AID_SYSTEM and AID_ROOT are always allowed.
*
* Returns 1 if uid allowed, 0 otherwise.
*/
static int check_control_perms(const char *name, int uid, int gid) {
int i;
if (uid == AID_SYSTEM || uid == AID_ROOT)
return 1;
/* Search the ACL */
for (i = 0; control_perms[i].service; i++) {
if (strcmp(control_perms[i].service, name) == 0) {
if ((uid && control_perms[i].uid == uid) ||
(gid && control_perms[i].gid == gid)) {
return 1;
}
}
}
return 0;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zmyde2010/archive/2011/04/09/6312615.aspx
只有uid == AID_SYSTEM || uid == AID_ROOT
或符合 control_perms[] = {
{ "dumpstate",AID_SHELL, AID_LOG },
{NULL, 0, 0 }
}; 的uid进程才有权限star/stop services
因此,如果我们碰到了权限问题,根据log提示,在/system/core/include/private/Android_filesystem_config.h
中查到进程定义,添加到control_perms[]列表
比如,uid ==AID_WIFI的某个程序需要权限启动service_xx
control_perms[] = {
{ "dumpstate",AID_SHELL, AID_LOG },
+ { "service_xx ",AID_WIFI, AID_WIFI},
{NULL, 0, 0 }
};
Android: 启动init.rc 中service的权限问题【转】相关推荐
- android 在init.rc中添加bootmusic,xboot-x4412开发板问题汇总-开发 - Powered by Discuz!
Q1:编译android时,执行mk脚本提示如下错误信息: lqm@ubuntu:~/samba/x4412_ics_rtm_v10$ ./mk -s ./mk: 95: ./mk: source: ...
- Android如何配置init.rc中的开机启动进程(service)【转】
本文转载自:http://blog.csdn.net/qq_28899635/article/details/56289063 开篇:为什么写这篇文章 先说下我自己的情况,我是个普通的大四学生,之前在 ...
- android init.rc中启动的service 默认是disable的,后续如何启动此服务
如果 android init.rc中启动的service 默认是disable的,如何才能启动此服务呢? init.rc中可以直接启动service 附带的参数决定启动程序的状态,例如数据业务中配置 ...
- Android程序暂停sh,init进程 解析Android启动脚本init.rc 修改它使不启动android init.rc中启动一个sh文件...
Android启动后,系统执行的第一个进程是一个名称为init 的可执行程序.提供了以下的功能:设备管理.解析启动脚本.执行基本的功能.启动各种服务.代码的路径: system/core/init,编 ...
- Android使用init.rc触发脚本实现隐藏内置应用
[实现逻辑] 通过在property_service.c中设置标志位,在设置中实现接口改变标志位, 使用init.rc中声明的服务来侦听标志位的变化,显式启动声明的服务,执行对应的脚本,把应用后缀从a ...
- Android 的 init.rc 文件简介【转】
转自:http://blog.csdn.net/yimiyangguang1314/article/details/6268177 init.rc由许多的Action和Service组成.每一个语句占 ...
- [Android6.0]App中调用init.rc中的服务,从而运行shell脚本
Author: Younix Platform: RK3399 OS: Android 6.0 Kernel: 4.4 Version: v2017.07 需求:希望在 Android App 中添加 ...
- Android 9.0 在init.rc中启动一个服务
现在有一个blink .bin文件,需要拷贝到/system/bin/目录下面去,然后再init.rc文件中启动该服务 一.init.rc文件中启动服务 1.在init.rc文件中启动服务 代码路径: ...
- Android 在线启动、停止 init.rc 中的服务
在 aosp 源码中,可以在 init.xxx.rc 中添加一些服务(不是四大组件的Service),比如 service my_service /vendor/bin/sh /vendor/bin/ ...
最新文章
- ldconfig动态链接库管理以及修改ld.so.conf.d
- 计算机音乐是哪一个,哪种软件适合音乐编辑的计算机版本?
- [拓扑排序/强联通分量] [NOIP201402] 信息传递
- 【android-tips】installfailedinsufficientstorage解决方案
- Vista共享文件夹无法访问?
- 在php中如何便利字符串,php字符串可以遍历嘛
- idea 快捷键获取类的全限定类名(包名+类名)
- 非线性动力学_非线性科学中的现代数学方法:综述
- Linux学习笔记-调用pthead_create创建线程
- 漫天飞舞的蒲公英你是我的幸福吗
- java设置请求头_前端需要知道的 HTTP 安全头配置
- 【乐理学习笔记】音符时值和拍号
- windows简单命令
- 这么糟糕的代码,真的是我以前写的吗?
- Java高级特性 集合框架、泛型和Collection(一)(第二十三天)
- Js高级-函数的理解
- 【笔试题1】按输入的两个数进行幂级数求和,如s=2的0次方+2的一次方+2的n次方,编码实现
- python爬虫音乐犯法么_Python爬虫案例:爬取网易云音乐
- python 编写获取阿里巴巴行业分类数据代码
- 程序员需要具备的五个基本条件
热门文章
- Java微服务 vs Go微服务,究竟谁更强!?
- 为什么程序员都不喜欢使用 switch ,而是大量的 if……else if ?
- 面试造飞机这么能耐,对着调优实战更不能怂啊!
- 亿级流量系统架构之如何设计承载百亿流量的高性能架构【石杉的架构笔记】...
- 8月组队学习机器学习理论
- 兄弟俩都是院士!哥哥在南大,弟弟在复旦
- 用Windows电脑训练深度学习模型?超详细配置教程来了
- 什么是 CNN?Facebook 员工写给小白的机器学习入门贴彻底火了!
- 哈哈哈,这个教人写出烂代码的项目在 GitHub 上火了...
- 再来一个吊打百度网盘的开源神器,还是99年妹子开发的