SeLinux权限相关问题

SeLinux可以看成是Linux的安全机制;就是一个进程要访问资源,在访问资源之前先看这个进程是否有访问资源的权限。那么问题来了,怎样确定资源没有访问到是SeLinux权限问题呢?

方法一:1.刷机的版本是Eng
2. add shell
3. setenforce 0
4. 再验证,如果这个bug解决了,说明是是SeLinux权限问题
备注:刷机版本一定是Eng,如果userdebug版本,输入setenforce 0会
显示permission denied. setenforce 0这句话的意思是关闭SeLinux权限。
方法二:查看Log
搜关键字 avc: denied
举例:
init: avc: denied { set } for property=persist.prop.temtemperature pid=2052 uid=1000 gid=1000 scontext=u:r:system_server:s0 tcontext=u:object_r:default_prop:s0 tclass=property_service permissive=0
其中scontext中的值包含你需要使用资源进程的名字,tcontext即是目标资源。

denied {set}: 表示缺少set权限
scontext=u:r:system_server:s0 : 表示u:r:system_server:s0 缺少了权限
tcontext=u:object_r:default_prop:s0: 表示是对u:object_r:default_prop:s0缺少了权限
tclass=property_service: 表示缺少权限的资源类型为property_service
根据Log缺什么补什么,增加权限:
allow system_server default_prop:property_service { set };

你可能感兴趣的:(个人开发,issue,bug,linux)