- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)