如果我们想要以root权限运行一个shell脚本(如此以来可以做很多的事情,比如直接控制设备节点等操作),那我们可以按照如下方法来做
1)修改system/core/rootdir/init.rc,添加如下的service和对应属性修改时启动的服务(在init.rc中可以添加服务,也可以添加系统属性改变时的对应动作),比如我们添加背光灯控制的相关服务和属性动做如下
service bri_off /system/bin/bri_off.sh
class main
user root
group root
oneshot
disabled
seclabel u:r:bri_off:s0

on property:sys.start_brightness_on=0
start bri_off

service bri_on /system/bin/bri_on.sh
class main
user root
group root
oneshot
disabled
seclabel u:r:bri_on:s0

on property:sys.start_brightness_on=1
start bri_on

小注:service后面的服务名字和sh脚本的名字要一样(.sh除外),不然不起作用。
也就是service名字要和bri_on.sh的名字一致是bri_on才能行。

当我们加好service和属性动作后,如果起作用后(到此还没完成,后续还要再给脚本文件添加属性配置),我们在终端输入,setprop sys.start_brightness_on 0就可以关闭背光灯,setprop sys.start_brightness_on 1就可以开启背光灯。这里需要注意,device/rockchip/rk3288/rk3288_box/init.rc中的内容可能也需要和上面的init.rc中的内容同步修改,我目前是这么做的,但是是否是必须的,还需要验证。
2)可以看到我们添加的服务其运行主体就是两个shell脚本,那么为了使得脚本在运行时具有高权限,我们需要在配置文件中为脚本文件配置权限。在system/sepolicy/file_contexts中加入如下配置
/system/bin/bri_off.sh u:object_r:bri_off_exec:s0
/system/bin/bri_on.sh u:object_r:bri_on_exec:s0
在system/sepolicy/目录下,新增两个文件,分别为bri_on.te和bri_off.te;
bri_on.te的内容如下:

type bri_on, domain;
type bri_on_exec, exec_type, file_type;
init_daemon_domain(bri_on)
bri_off.te的内容如下:

type bri_off, domain;
type bri_off_exec, exec_type, file_type;
init_daemon_domain(bri_off)
至此重新编译源码就可以实现以root权限运行脚本了,这样做的好处就是既可以对外开放特定root权限的操作,但是又不用开放root权限。直接通过读写系统属性值的形式来操作。
上面的bri_on.sh和bri_off.sh是我们加入到内核中的脚本,具体的加入方式是,在
device/rockchip/common目录下新建这两个运行脚本,然后在device/rockchip/common目录下的device.mk中新增加对这两个文件的拷贝动作,
就是在变量PRODUCT_COPY_FILES中新增这俩文件的拷贝动作。
device/rockchip/common/bri_on.sh:system/bin/bri_on.sh
device/rockchip/common/bri_off.sh:system/bin/bri_off.sh
之后再编译这俩文件就会被拷贝到对应的位置,从而最终在运行的rom中处于/system/bin/目录下面

Android7下app以root权限运行shell脚本的一种方法相关推荐

  1. 运行 Shell 脚本有两种方法:

    1.作为可执行程序 将上面的代码保存为 test.sh,并 cd 到相应目录: chmod +x ./test.sh #使脚本具有执行权限 ./test.sh #执行脚本 注意,一定要写成 ./tes ...

  2. aix shell脚本 运行java_Linux中执行shell脚本的4种方法总结

    Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法: 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: 复制代码 代码如下: c ...

  3. Linux中执行shell脚本的4种方法

    这篇文章主要介绍了Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法,需要的朋友可以参考下. bash shell 脚本的方法有多种,现在作个小结.假设我们编写 ...

  4. Linux中执行shell脚本的5种方法总结

    Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法: 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: 复制代码 代码如下: c ...

  5. php怎么获取权限操作 shell,利用php利用root权限执行shell脚本必须进行以下几个步骤...

    这几天弄的东西涉及到php利用shell脚本与Linux的交互,我们知道利用php运行脚本来访问Linux是以Apach的身份来执行的,因此它自己能够所做的事情很少的,因为没有足够的权限,这里就涉及到 ...

  6. php利用root权限执行shell脚本

    今天晚上:19:30分,这个困扰了我好久的问题终于解决,其中的原理也终于弄清楚了,总之是利用sudo来赋予Apache的用户root的执行权限,下面记录一下: 利用php利用root权限执行shell ...

  7. linux下开机自动启动,定时运行shell脚本

    Shell 脚本与window/dos 下的批处理相似,也就是用各类命令预先放入一个文件中,方便一次性执行的的一个程序文件,主要是方便管理员进行设置或者管理用. 一.shell脚本 在Linux下,我 ...

  8. app以root身法执行shell脚本

    2019独角兽企业重金招聘Python工程师标准>>> 写一个xxxsh的shell脚本文件,放到android系统的/system/bin目录下 #! /system/bin/sh ...

  9. shell脚本内调用另外一个shell脚本的几种方法

    有时会在一个shell脚本(如test_call_other_shell.sh)中调用另外一个shell脚本(如parameter_usage.sh),这里总结几种可行的方法,这些方法在linux上和 ...

最新文章

  1. 【知识积累】随机数生成的几种方法
  2. git pull 默认拉取远端其他分支 问题解决
  3. SQLite数据库Java驱动下载及连接示例(sqlite-jdbc-3.30.1.jar)
  4. mysql安装 经验_MySQL安装教程 这些经验不可多得
  5. android 数据线读串口数据线,一种串口写频及USB数据二合一数据线的制作方法
  6. 一个简单的你好,世界! 使用 Boost.MPI 消息传递的示例
  7. 中国速度之二神山建设(4):全能运维,召之即来,来之即战 | IDCF DevOps案例研究...
  8. jQuery选择器,用逗号分隔的时候需要注意范围问题
  9. Codeforces Round #716 (Div. 2), B. AND 0, Sum Big, 快速幂结论题
  10. Spring源码解析(五)——自定义标签解析
  11. Jupyter notebook文件默认存储路径以及更改方法
  12. 吴恩达机器学习Optional Lab - Neurons and Layers
  13. 好用的服务器终端,推荐7款超级好用的终端工具 —— SSH+FTP
  14. outlook2019登录126邮箱(imap)
  15. 以前手机应用java咖啡_作为编程语言的“java”怎么就成了咖啡的代称?
  16. CVE-2021-30461 - VoIPMonitor未授权远程代码执行漏洞
  17. GOOGLE卫星地图 计算方式
  18. 游戏模型:不是天生,不用PS,3DMax教你怎么拥有长长的睫毛
  19. 715 工作制要来了!这家大公司老板:996 算个毛啊,我们715...
  20. postman的四种请求:post,get,put,delete

热门文章

  1. 项目销售的技巧(二)
  2. 【华为OD机试真题 JS】字符串分割(二)
  3. 2023年中国科学技术大学/计算机学院电子信息专硕上岸经验
  4. ulink仿真器固件降级适配老版本方法
  5. chainer-骨干网络backbone-EfficientNet_V1代码重构【附源码】
  6. 5款压箱底的免费宝藏软件,不允许你不知道
  7. java程序中的图片与数值关联_Java 数据库处理通用代码 And 图片存储 及其遇到的问题...
  8. Matlab学习分享(4) (匿名函数)
  9. 将临时表的数据更新到正式表
  10. Xbox 360 kinect, WII killer?