当前位置: 首页 > news >正文

2024-11-6----Android 11(全志713m)----- 关于添加 Selinux 权限

需求

节点:

/sys/devices/platform/motor0/motor_ctrl

上层 APP 使用 JNI 需要对该节点进行 echo 的操作,操作失败。

添加前的验证工作

adb 进去验证下,如下图所示:
在这里插入图片描述
发现权限不够。su 以后再操作是OK的,如下图:
在这里插入图片描述

添加前的修改

为防止报权限错误,直接给777,因为该节点是驱动生成的,所以在代码中修改

--- a/H713-v1.3/longan/kernel/linux-5.4/drivers/misc/gpio-motor/motor-control.c
+++ b/H713-v1.3/longan/kernel/linux-5.4/drivers/misc/gpio-motor/motor-control.c
@@ -268,7 +268,7 @@ static ssize_t motor_ctrl_store(struct device *dev, struct device_attribute *attstatic struct device_attribute motor_ctrl_attr = {.attr = {.name = "motor_ctrl",
-               .mode = 0664,
+               .mode = 0777,},.show = motor_ctrl_show,.store = motor_ctrl_store,

从之前的验证工作可以知道,adb shell 进去 su 以后才可以成功echo节点,所以把APP进行系统签名,这样便会有系统级别的权限,也就是su权限

LOCAL_CERTIFICATE := platform

完整文件如下:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := FloatService
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_TAGS := optional
LOCAL_BUILT_MODULE_STEM := package.apk
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(LOCAL_MODULE).apkLOCAL_PREBUILT_JNI_LIBS := \lib/libcptp_float_motor.soinclude $(BUILD_PREBUILT)

这样子结点有777权限,然后APP又具有系统权限,如果还发现APP无法echo成功,adb shell进去

setenforce 0

再用APP操作一次!发现成功了!所以就是 Selinux 权限 不够的问题。

抓AVC权限log

APP 进行操作前

adb logcat -c

清除多余的log,然后进行 APP 操作,发现抓到的log报:

 type=1400 audit(0.0:111): avc: denied { read write } for name="motor_ctrl" dev="sysfs" ino=27911 scontext=u:r:system_app:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0

一般都是缺什么加什么,网上也有根据报的log,添加权限的办法,我这里就不具体述说,我直接在system.te里边加

allow system_app sysfs:file { read write };

报违反谷歌权限,如果不需要CT

http://www.lryc.cn/news/481631.html

相关文章:

  • shodan5(泷羽sec)
  • 【Linux】Ansible集中化运维工具(详解)安装、常用模块、playbook脚本
  • 惠州石湾DELL T130服务器黄灯不开机案例
  • ⭐SmartControl: Enhancing ControlNet for Handling Rough Visual Conditions
  • wordpress站外调用指定ID分类下的推荐内容
  • Ente: 我们的 Monorepo 经验
  • Kafka java 配置
  • 网络安全现状:复杂的威胁形势导致压力水平飙升
  • 【机器学习】强化学习(1)——强化学习原理浅析(区分强化学习、监督学习和启发式算法)
  • 【SoC设计指南 基于Arm Cortex-M】学习笔记1——AMBA
  • flutter鸿蒙模拟器 Win环境调试报错问题记录(暂未解决)
  • 详解Rust标准库:HashSet
  • 记录学习react的一些内容
  • json绘制热力图
  • linux 下查看程序启动的目录
  • 书生浦语第四期基础岛L1G2000-玩转书生「多模态对话」与「AI搜索」产品
  • 保护Kubernetes免受威胁:容器安全的有效实践
  • 【客观理性深入讨论国产中间件及数据库-科创基础软件】
  • MFC中Excel的导入以及使用步骤
  • AWS S3在客户端应用不能使用aws-sdk场景下的文件上传与下载
  • 深入解析 Transformers 框架(四):Qwen2.5/GPT 分词流程与 BPE 分词算法技术细节详解
  • 【Python-AI篇】K近邻算法(KNN)
  • aws xray如何实现应用log和trace的关联关系
  • centos服务器登录失败次数设定
  • 实时高效,全面测评快递100API的物流查询功能
  • 第14张 GROUP BY 分组
  • 笔记整理—linux驱动开发部分(10)input子系统与相关框架
  • [算法初阶]埃氏筛法与欧拉筛
  • 【THM】linux取证 DisGruntled
  • SpringBoot整合Freemarker(四)