Android5.x权限问题解决方法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
An droid 5.x权限问题解 决方法 Revision History Version Date Section/ Page Changes compared to previous issu V1.0 「2015-10-13 River in itial versi on an droid 5.x开始,弓I入了非常严格的 seli nux权限管理机制,我们经常会遇到因为 seli nux权限问题造 成的各种avc denied困扰。 本文结合具体案例,讲解如何根据 log来快速解决90%的权限问题。 遇到权限问题,在 Comma nd: logcat或者kernel的log中一疋会打印 avc denied提示缺少什么权限, cat /proc/kmsg | grep avc 或 dmesg | grep avc 解决原则是:缺什么补什么,一步一步补到没有 avc denied为止。 下面给出四个案例: 解决方法:platform_app.te allow platform_app app_data_file:file execute; allow engsetmacaddr vfat:dir { search write add_name create }; 或者 allow engsetmacaddr vfat:dir create_dir_perms; 解决方法 :sdcardd.te allow sdcardd system_data_file:dir read;或者 allow sdcardd system_data_file:dir rw_dir_perms (rw_dir_perms 包含 read write,可以参考 external/sepolicy/global_macros 的定义声明) 通过这四个案例,我们可以总结出一般规律 , 以第4个为例 允许某个scon text对某个tcon text拥有某个权限 我们的log重新排列一下, scon text=u:r: sdcardd tcontext=u:object_r: system_data_file:sO tclass=dir avc: denied { read } 得到万能套用公式如下: 在scon text所指的te文件中加入类似如下内容: tcontext tclass avc deni词的权限 sy3te™_data_f ilez dir read external/sepolicy/ 或者 device/softwinner/xxxx-commm/sepolicy/ 下,修改 之后,都要重刷 boot.img。 补充说明: 1. 有时候avc denied的log不是一次性显示所有问题,要等你解决一个权限问题之后,才会提示另 外一个权限问题。比如提示确实某个目录的 read权限,你加入read之后,再显示缺少 write权限, 要你一次次一次试,一次一次加。这时你可以简单粗暴写个 rw_dir_perms,这个权限包含了 {open search write ...}等等很多权限。 可以查看external/sepolicy/global_macros来了解更多权限声明; 2. 要加入的权限很多时,可以用中括号,比如 allow en gsetmacaddr vfat:dir { search write add_ name create}; 3. 遇到问题不确定是否由于 selinux问题造成,可先在 adb shell下,输入setenforce 0,让selinux失 效,看是否问题还出现。以此可以澄清是非 selinux造成的问题。 以上基本是对已经存在的进程增加权限,但对第三方进程改如何新增一个全新的 te文件并赋予权限 呢? 以写mac地址的setmacaddr执行文件为例(这个执行档 an droid原生不存在,自行添加的): 1.在 external/sepolicy/file_contexts 中,参考其他进程声明一个: /system/b in/in stall-recovery.sh u:object_r:i nstall_recovery_exec:sO /system/b in /dex2oat u:object_r:dex2oat_exec:s0 /system/b in/patchoat u:object_r:dex2oat_exec:s0 /system/bin/setmacaddr u:object_r:engsetmacaddr_exec:sO 指定setmacaddr的路径,并指定一个名字,一定要以 _exec结尾 2•参考其他文件在 external/sepolicy/创建

文档评论(0)

wangxing1张 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档