Android7.1update.zip升级在system/bin下新增可执行文件没有可执行权限问题
Android7.1update.zip升级在system/bin下新增可执行文件没有可执行权限问题
外出的设备,只能通过update.zip方式升级,比如要在设备/system/bin目录下增加login,在需要时执行login,升级后发现login文件没有可执行权限
msm8937_64:/ # ls -l system/bin/login
-rw-r--r-- 1 root root 1256440 2008-08-0120:00 system/bin/login
第1个root是指UID(文件的owner),第2个root是指GID(Group ID)
但我们需要有可执行文件,怎么解决呢,下面给出解决过程的尝试及解决方法
1. device\qcom\common\rootdir\etc\init.qcom.rc增加chmod来修改---无效
on boot
…
chmod 0755/system/bin/login
2. updater-script调用set_perm()设置权限---无效
更新失败,/cache/recovery/last_log提示
提示line 15 col 48: unknown function"set_perm",原因未知
这是因为bootable\recovery\updater\updater.cpp的没有实现set_perm(),下面给出android4.4版本下相关代码:
// Maybe, at some future point, we candelete these functions? They have been// replaced by perm_set and perm_set_recursive.RegisterFunction("set_perm", SetPermFn);
RegisterFunction("set_perm_recursive",SetPermFn);
我们代码是android7.1的,取而代之的是set_metadata_recursive和set_metadata命令,主要是修改文件或目录权限和属组等信息
比如:set_metadata("/system/bin/login","uid", 0, "gid", 0, "mode", 0755,"capabilities", 0x0, "selabel", "u:object_r:system_file:s0");-----------此方法可以解决此问题(推荐)
第1个0表示ROOT,上帝用户: ROOT, 他的UID= 0; 上帝用户永远属于任何UID
Uid和gid的值system\core\include\private\android_filesystem_config.h定义,比如:
/* This is the master Users and Groupsconfig for the platform.* DONOT EVER RENUMBER*/#define AID_ROOT 0 /* traditional unix root user */#define AID_SYSTEM 1000 /* system server */#define AID_RADIO 1001 /* telephony subsystem, RIL */
#define AID_BLUETOOTH 1002 /* bluetooth subsystem */
#define AID_GRAPHICS 1003 /* graphics devices */
#define AID_INPUT 1004 /* input devices */
#define AID_AUDIO 1005 /* audio devices */
…
set_metadata(filename, key1, value1[, key2 , value2,...])
Sets the keys ofthe given filename to values. For example: set_metadata("/system/bin/netcfg","uid", 0, "gid", 3003, "mode", 02750,"selabel", "u:object_r:system_file:s0","capabilities", 0x0).
set_metadata_recursive(dirname, key1, value1[, key2, value2,...])
Recursively setsthe keys of the given dirname and all its children to values.For example:set_metadata_recursive("/system","uid", 0, "gid", 0, "fmode", 0644,"dmode", 0755, "selabel","u:object_r:system_file:s0", "capabilities", 0x0).
3. 另一种解决方法(但不推荐)
package_extract_dir()对应的PackageExtractDirFn()调用mzExtractRecursive(),此函数bootable\recovery\minzip\Zip.c在中实现
把UNZIP_FILEMODE的值由0644改为0755即可,但是如果之前用0644方式的升级包升级过,在此基础上再升级,login权限还是0644其他,为了解决此问题,还需要在updater-script文件增加了delete("/system/bin/login");配合才能解决,但这种解决方法不是很合理,不推荐。
参考链接:
Android 5.x OTA Update官方文档(四、OTA更新包解读)
http://blog.csdn.net/huangyabin001/article/details/44873753
Flashing CM 11, I get`set_metadata_recursive: some changes failed`:
https://android.stackexchange.com/questions/62982/flashing-cm-11-i-get-set-metadata-recursive-some-changes-failed
Android7.1update.zip升级在system/bin下新增可执行文件没有可执行权限问题相关推荐
- Linux系统下给.sh添加可执行权限并运行
Linux系统下给.sh添加可执行权限并运行 1.添加可执行权限 chmod u+x xxx.sh 解释: chmod(change the permissions mode of a file)是权 ...
- android 版本更新原理,Android系统Recovery工作原理之使用update.zip升级过程分析(二)...
Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的解决 在上一篇末尾提到的生成差分包时出现的问题,现已解决,由于最近比较忙,相 ...
- Android系统Recovery工作原理之使用update.zip升级过程分析(二)---u...
2019独角兽企业重金招聘Python工程师标准>>> Android系统Recovery工作原理之使用update.zip升级过程分析(二)---update.zip差分包问题的 ...
- Android系统Recovery工作原理之使用update.zip升级过程分析(一)
这篇及以后的篇幅将通过分析update.zip包在具体Android系统升级的过程,来理解Android系统中Recovery模式服务的工作原理.我们先从update.zip包的制作开始,然后是And ...
- Android系统Recovery工作原理之使用update.zip升级过程分析(一)---update.zip包的制作【转】...
本文转载自:http://blog.csdn.net/mu0206mu/article/details/7399822 这篇及以后的篇幅将通过分析update.zip包在具体Android系统升级的过 ...
- Android系统Recovery工作原理之使用update.zip升级过程分析(五)
Android系统Recovery工作原理之使用update.zip升级过程分析(五)---update.zip包从上层进入Recovery服务文章开头我们就提到update.zip包来源有两种,一个 ...
- linux如何安装zip文件格式,如何在Linux下创建与解压,安装zip, tar, tar.gz和tar.bz2文件...
zip可能是目前使用得最多的文档压缩格式.它最大的优点就是在不同的操作系统平台,比如Linux, Windows以及Mac OS,上使用.缺点就是支持的压缩率不是很高,而tar.gz和tar.gz2在 ...
- mac python2.7升级到3.7_Mac下python2.7 升级到3.7
1. 前言 Mac系统自带python2.7,本文目的是将自带的python升级到3.6版本. 网上有本多的做法是让python2.7和python3.X两个版本共存,博主并不知道,是两版本共存好,还 ...
- mysql5.7.17.zip教程,Mysql学习win10下mysql 5.7.17 zip压缩包版安装教程
搜索热词 <MysqL学习win10下MysqL 5.7.17 zip压缩包版安装教程>要点: 本文介绍了MysqL学习win10下MysqL 5.7.17 zip压缩包版安装教程,希望对 ...
最新文章
- vs2005不能找到ASP.NET网站之郁闷
- 使用阿里云对象存储OSS收藏老婆新垣结衣日常照
- 95-235-048-源码-task-数据交换策略
- 重新想象 Windows 8 Store Apps (23) - 文件系统: 文本的读写, 二进制的读写, 流的读写, 最近访问列表和未来访问列表...
- 20220522Python3.10安装教程
- 双曲余弦函数实现(C语言)
- 使用记事本完成第一个Java程序的开发遇到异常
- 2021-04-13
- wx.showToast() 在真机中一闪而过
- Cadence OrCAD Capture 在Excel中编辑所有元件属性然后导入设计图纸的方法
- 信息传输速率与传信率_波特率和数据传输速率的关系
- 论VM和Hyper-v虚拟机的使用场景
- linux slub分配器,Vi Linux内存 之 Slub分配器(六)
- java获取环境变量路径/java获取环境变量和系统属性
- 没想到钱多多的求职之路竟如此艰辛,求大佬指点
- 【新学期、新Flag】例文:我的新学期Flag
- 在线编辑器的基本实现原理
- JavaScript+react笔记
- nvm切换node版本基本操作篇
- 2015年年终总结----磕磕绊绊的一年
热门文章
- c 语言与试验系统,C/C++程序设计学习与实验系统
- 017_Upload上传
- 如何根据分页的当前页数查询数据_数据量很大的情况下,如何分页查询优化方案?...
- 负载均衡下ajax第二次请求,会话清除第二个AJAX电话
- mongo mysql 条件查询效率_mongodb查询条件对查询效率的影响
- es 查询语法_ES 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?
- java 递归原理_Java中递归原理实例分析
- python大神的成长之路_Python大神成长之路: 第二次学习记录
- Java基础:基本数据类型包装类
- Android各大热补丁方案分析和比较