`

Android 设置/system/bin/cmd的权限遇到的问题

阅读更多

Android开发的过程中,需要添加一些系统服务,而这些服务需要特殊的权限SUID。

关键点

  • 文件权限信息是保存在文件系统中的特殊位置的,不同文件系统间传输文件,可能导致权限信息的丢失
  • 而像SUID这样的仅限信息,在相同文件系统cp时就不会携带

设置文件权限的方法在Android系统中有两种:

  • init.rc阶段, 系统每次启动运行时处理
  • 打包阶段: 含有文件系统的img文件,OTA升级包

下面分别分析两种方法:

init.rc阶段

  • 方法:通过在init.rc文件中添加相关处理操作
  • 问题:操作时需要确保操作区域文件系统是可读写状态,而这其中涉及到mount操作。操作时,需要注意针对上下文处理,并保证最终切换到RO状态(对开机性能有影响)。另外不同设备的文件系统与设备路径可能不同,需要通过具体场景分析

打包阶段

该阶段是Android系统特有的方案,会在整体编译过程中生成img文件,然后系统在生成OTA包时,通过反射img文件中的文件权限信息,在update-script中添加相应的权限设置操作。

这种方法是一种静态优化策略,如果能够保证系统的烧机输出,是可以采用该方案的。

分享到:
评论

相关推荐

    解包打包android内核system.img文件所需工具

    把system.img复制到unyaffs的相同目录下,cmd命令下cd到unyaffs的目录下,然后执行命令:unyaffs system.img unyaffs会把system.img解压到其目录下。 linux版本的unyaffs用法: 把unyaffs复制到/usr/bin...

    Google G1 adb Shell system 32 添加文件

    在Android开发过程中,ADB(Android Debug Bridge)是一个强大的工具,用于连接和管理Android设备或模拟器。Google G1是Android早期的设备型号,它开启了Android智能手机的时代。在本主题中,“Google G1 adb Shell ...

    android系统中调用shell脚本

    ProcessBuilder pb = new ProcessBuilder("/system/bin/sh", "-c", "/sdcard/myscript.sh"); Process process = pb.start(); ``` 4. **使用`dalvikvm-heap`权限**:在AndroidManifest.xml中添加`<uses-permission ...

    Android8.1 替换本地adb

    3、 配置权限 a) 查看 USB PID VID,打开 USB 调试先. $ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device ...

    pcf8563_i2c1_r8_ruoge_ov2640通过给RTC驱动增加设备节点读取秒钟成功+直接读取I2C1获取秒钟值20160626_2201.7z

    root@android:/dev # cd /sys/class/i2c-adapter/ root@android:/sys/class/i2c-adapter # ll lrwxrwxrwx root root 1970-01-02 08:31 i2c-0 -> ../../devices/platform/sun5i-i2c.0/i2c-0 lrwxrwxrwx root root ...

    Delphi实现android系统的步进电机控制.rar

    Delphi为android系统做的步进电机控制程序,可对三轴步进电机进行控制,源码设计:爱吃猪头肉。包括和单片机的通讯协议,android串口控件的收发使用等等。...new String[]{"/system/bin/su","-c", cmd});

    hciconfig蓝牙测试工具

    2. **推送工具**:使用adb(Android Debug Bridge)将`hciconfig`二进制文件推送到设备的可执行目录,通常是 `/system/bin` 或 `/system/xbin`。 3. **赋予执行权限**:通过`chmod`命令赋予`hciconfig`执行权限,...

    softap_ap6212a0_tinav2.1_验证通过_旧版本的系统_20170915_1223没有外层目录.7z

    rootroot@cm-System-Product-Name:/home/wwt$ tar zxvf tinaV2.1_wyb_20170302_patch_leo_20161102.tar.gz rootroot@cm-System-Product-Name:/home/wwt$ mv tinaV2.1 softap_ap6212a0_tinav2.1 rootroot@cm-System...

    Android 的cpu 硬盘 内存 网络设置 系统信息 硬件信息.pdf

    result = cmdexe.run(args, "/system/bin/"); } catch(IOException ex) { ex.printStackTrace(); } return result; } ``` 上述代码中,通过CMDExecute类和系统命令执行,读取了包含系统版本的文件内容,并返回...

    SYSTEM.NEW.DAT解包工具(可解5.0-8.0系统)

    在Android系统中,`SYSTEM.NEW.DAT`是一个重要的系统文件,它包含了系统的各种核心组件、设置和应用程序。这个文件通常是经过打包处理的,以便于在设备上高效地存储和分发。本文将深入探讨`SYSTEM.NEW.DAT`的结构、...

    android studio 使用adb 命令传递文件到android 设备的方法

    在命令行(如Windows的CMD或Android Studio的Terminal)中,输入`adb devices`命令,检查设备是否已正确连接。 2. **将PC文件传输到Android设备** 当设备连接成功后,可以使用`adb push`命令将本地PC文件发送到...

    android源码下载需要使用的repo脚本

    2. 设置可执行权限: ``` chmod a+x ~/bin/repo ``` 3. 将`~/bin`添加到PATH环境变量中,确保系统可以在任何目录下运行`repo`。 ### 3. 初始化Android源码仓库 使用`repo`初始化Android源码仓库,你需要创建一...

    adb工具包刷机工具

    用于安卓手自我的一个好友偷摸搬运过来、刷机精灵、甜辣椒什么的有时对机型支持并不是那么完善的、关键时刻还的需要通用的adb命令自己动手、把adb完整工具包放在系统system32下、打开cmd、输入adb shell测试通过即可...

    新版Android开发教程.rar

    The sections below describe the system and software requirements for developing Android applications using the Android SDK tools included in Android 1.1 SDK, Release 1. Supported Supported Supported ...

    手机root刷机教程

    - **Root权限**:在Android系统中,Root权限是指获得最高管理员权限,类似于Windows系统中的Administrator权限。拥有Root权限后,用户可以自由地对系统进行各种级别的操作,包括但不限于安装特殊的系统级应用、更改...

    android开发环境

    - 在安装过程中可能会遇到权限或依赖问题,确保所有必要的工具都已正确安装。 2. **配置Android SDK路径**: - 在Eclipse中依次点击`Window` > `Preferences` > `Android` > `SDK Location`,选择已经安装好的...

Global site tag (gtag.js) - Google Analytics