Android SELinux 权限相关问题

这篇具有很好参考价值的文章主要介绍了Android SELinux 权限相关问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题

再做OTA的时候,需要zip包放在data/ota_package下,再操作的时候,报错如下

avc: denied { write } for path="/data/ota_package/update.zip" dev="dm-9" ino=11969 scontext=u:r:system_app:s0 tcontext=u:object_r:ota_package_file:s0 tclass=file permissive=0

提取关键字

scontext: system_app

tcontext: ota_package_file

tclass: file

denied: write
翻译过来就是 system_app 对于ota_package_file 目录缺少write 权限
我们只需要android/device/qcom/sepolicy_vndr/generic/vendor/common/目录下 的system_app.te添加如下:

allow system_app apk_data_file:dir write;
allow system_app ota_package_file:dir { search write add_name create};
allow system_app ota_package_file:file { getattr read open map create write};

然后在Android 目录下执行make selinux_policy -j96

验证

make selinux_policy产生的编译文件会输出到out/target/product/XXXX/system/etc/selinux 和 out/target/product/XXXX/vendor/etc/selinux目录。
adb push out/target/product/XXXX/system/etc/selinux 和 out/target/product/XXXX/vendor/etc/selinux到设备的/system/etc/和/vendor/etc/目录,重启设备即可生效。

SELinux 权限不起作用

正常情况如上就可以,当然下面就是不一般的问题,在SystemUI里面操作文件节点写值,报错如下:

   systemui: type=1400 audit(0.0:102): avc: denied { write } for name="commit" dev="sysfs" ino=48206 scontext=u:r:platform_app:s0:c512,c768 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0 app=com.android.systemui

按照上面的经验,我们需要再platform_app.te里添加如下:
allow platform_app sysfs:file write
但是这样会有两个问题:

  • 一个是权限放大,这样的话所有的sysfs文件都被赋予了write权限,
  • 二是这样会导致never allow 报错,编译时会提示。所以不推荐这种方法
正确姿势
  • 在device/qcom/sepolicy_vndr / generic/vendor/common/file.te文件里声明如下
type sys_bus_devices_commit, sysfs_type, fs_type;
  • 在device/qcom/sepolicy_vndr / generic/vendor/common/file_contexts
/sys/bus/i2c/devices/0-0006/commit                                                         u:object_r:sys_bus_devices_commit:s0
/sys/devices/platform/soc/4a84000.i2c/i2c-0/0-0006/commit                                  u:object_r:sys_bus_devices_commit:s0
  • 最后在 platform_app.te追加如下
allow platform_app sys_bus_devices_commit:file {getattr read open write};
allow platform_app sys_bus_devices_commit:lnk_file {getattr read open write};

验证方法如上述,可是,死活就是不成功,错误一点都没变,说明添加的一直未生效,最后生生就在这卡了一天,增量编,整编都试了,最后问题出在
android/system/sepolicy/private/mls


mlsconstrain { file lnk_file sock_file chr_file blk_file } { write setattr append unlink link rename }
             (t2 == app_data_file or t2 == privapp_data_file or t2 == appdomain_tmpfs or l1 eq l2 or t1 == mlstrustedsubject or t2 == mlstrustedobject);

上一条的限制就导致了,即使在 platform_app.te 文件中添加的语句验证没有问题,但是这条限制没有通过,权限问题同样没有解决。
最终在file.te里添加如下:

type sys_bus_devices_commit, sysfs_type, fs_type, mlstrustedobject;

重新编译,验证,没问题了,
事实就是如此,真是竟无语凝噎
参考:https://blog.csdn.net/it_rensheng/article/details/121691982文章来源地址https://www.toymoban.com/news/detail-404809.html

到了这里,关于Android SELinux 权限相关问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android系统安全权限相关内容

    Android手机把权限从低到高分成三大类: 1、第三方应用权限(App可以在用户授权下访问某些具体的操作) 2、Android手机用户普通权限(手机使用者可以操作Android系统的日常应用) 3、Android手机的Root权限(超级用户权限,可以控制Android系统的运转) 1. 更新操作系统和应用程序

    2024年03月23日
    浏览(36)
  • Android 9.0 无源码app增加授予相关权限

    在9.0的系统rom产品开发中,对于一些无源码app需要增加一些权限,比如悬浮窗权限,由于app内部没申请这个权限,所以需要系统适配默认授予这个权限, 就需要在PMS解析安装app的时候 授予悬浮窗权限就可以了 在pms管理解析安装app中,是通过PackageManage的getPackageArchiveInfo()实

    2024年02月02日
    浏览(43)
  • 关于Qt编译android时候一个问题

    搞了三四天,搞的快崩溃了,问题提示为 修改问题 找到这个文件 注释下面的四行数据

    2024年02月16日
    浏览(39)
  • 《Android学习笔记》Android12蓝牙扫描不到设备的权限问题

    Android12 关于蓝牙这部分新增了 BLUETOOTH_SCAN 、 BLUETOOTH_ADVERTISE 和 BLUETOOTH_CONNECT 权限,这些权限都属于敏感权限,都需要在代码中动态申请。移除了Android11 及以下版本中必须申请的位置权限[ FINE_LOCATION ] 和 [ COARES_LOCATION ]。 1、在Manifest.xml清单文件中添加对应的权限。 其中 An

    2024年02月15日
    浏览(47)
  • 一篇文章搞定Android权限问题(全版本)

    文章内容如下: 如果你只是想快速的完成你Android权限申请的工作,那么直接上工具PermissionX 如果是想真正的了解Android的权限问题,那么建议你用15分钟通读一下本文。(可以不去实验,收藏以备后用) 首先了解Android版本和SDK的关系,帮助我们分辨后面的权限版本。 其次把最常

    2023年04月20日
    浏览(51)
  • 关于 Android 没有文件存储权限保存文件的问题

    我发现Android 有些APP 他们不需要申请文件存储权限就可以进行文件的保存翻阅大量文章总结如下: 从 Android 10 开始,Android 引入了一种新的存储权限模型,其中应用需要明确请求运行时权限以访问外部存储。在这种情况下,许多应用程序可能需要请求 WRITE_EXTERNAL_STORAGE 权限才

    2024年01月17日
    浏览(43)
  • 一篇文章搞定《Android权限问题(全版本)》

    文章内容如下: 如果你只是想快速的完成你Android权限申请的工作,那么直接上工具PermissionX 如果是想真正的了解Android的权限问题,那么建议你用15分钟通读一下本文。(可以不去实验,收藏以备后用) 首先了解Android版本和SDK的关系,帮助我们分辨后面的权限版本。 其次把最常

    2024年02月03日
    浏览(50)
  • 【Android】SElinux(Security-Enhanced Linux)

    作为安卓安全模型的一部分,安卓使用安全增强型Linux(SELinux)对所有进程实施强制性访问控制(MAC),甚至是以root/超级用户权限(Linux能力)运行的进程。许多公司和组织都为安卓的SELinux实现做出了贡献。有了SELinux,安卓可以更好地保护和限制系统服务,控制对应用程序

    2023年04月13日
    浏览(33)
  • Android 10以上出现的 android Permission denied 读写权限问题解决方法

    原因: 从Android 10 开始,应用即使申请了权限,也只能读写自己外部存储的私有目录,就是Android/data/对应应用包名 下的相关目目录。除此之外任何目录的读写都会被拒绝,并提示 android Permission denied。 解决方案 在 AndroidManifest.xml 文件中,在application标签中添加如下属性 and

    2024年02月03日
    浏览(60)
  • Flutter层对于Android 13存储权限的适配问题

    感觉很久没有写博客了,不对,的确是很久没有写博客了。原因我不怎么想说,玩物丧志了。后面渐渐要恢复之前的写作节奏。今天来聊聊我最近遇到的一个问题: Android 13版本对于storage权限的控制问题。 我们都知道,Android的每个版本更新都会伴随着搞事,也就是所谓的谷

    2024年02月07日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包