IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 2022-07-20 Android 11 SELinux avc 修改sys目录下面某个节点的权限 -> 正文阅读

[移动开发]2022-07-20 Android 11 SELinux avc 修改sys目录下面某个节点的权限

一、我这里有/sys/devices/platform/thermal-camera-control/powerenable?这样一个节点,用命令ls -Z 查看该文件的域。

?

二、我现在在一个普通app上面读写这个节点,提示提无认证的app没有读写权限。

onsole:/ $ [  382.626960] type=1400 audit(1658283554.576:39): avc: denied { write } for comm="don.powerenable" name="powerenable" dev="sysfs" ino=15716 scontext=u:r:untrusted_app_29:s0:c122,c256,c512,c768 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0 app=com.topdon.powerenable

console:/ $ [  384.749073] type=1400 audit(1658283556.703:40): avc: denied { read } for comm="don.powerenable" name="powerenable" dev="sysfs" ino=15716 scontext=u:r:untrusted_app_29:s0:c122,c256,c512,c768 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0 app=com.topdon.powerenable

三、可以修改策略让所有的无信任app都可以读写sys下面的节点,但这样不安全,我这里就单独开放这个节点的权限,步骤如下。

1、在file.te中,加入一个域的别名,如在该例中,我们原本需要访问的是sysfs域中的一个文件,所以我们在file.te中定义一个新的域,名字可以随便取,定义一个叫做sysfs_powerenable的域(domain),该域具有fs_type和sysfs_type属性(attribute)如

type sysfs_powerenable, fs_type, sysfs_type, mlstrustedobject;

?2、在同目录中的file_contexts中加入对需要操作权限的文件路径与我们定义的域进行映射,如:

#/sys/devices/platform/thermal-camera-control/status   u:object_r:sysfs_powerenable:s0

3、在我们新建的powerenable.te策略文件中,把之前的sysfs替换为我们新定义的域,即

allow untrusted_app_29  sysfs_powerenable:file  { read open write getattr};

4、adb shell中通过ls -Z?取查看该文件的域,如果映射成功了,会变为sysfs_powerenable

5、编译的时候可能会有提示不允许untrusted apps 写sysfs下面的节点,按下面的修改策略。?

?6、测试结果如下,第三方app 可以读写这个节点了

四、/sys/devices/platform/thermal-camera-control/status 本来系统app是可以读写的,但是我在\device\rockchip\common\sepolicy\vendor\file_contexts 文件里面添加

/sys/devices/platform/thermal-camera-control/status   u:object_r:sysfs_powerenable:s0

这个时候第三方app是可以读写这个status节点,但是系统app反而读写不了这个节点,提示

rk3566_rgo:/ # cd /sys/devices/platform/thermal-camera-control/
rk3566_rgo:/sys/devices/platform/thermal-camera-control # ls -Z status
u:object_r:sysfs_powerenable:s0 status
rk3566_rgo:/sys/devices/platform/thermal-camera-control #

解决方法是在powerenable.te 文件里面添加系统app读写这个节点的权限

allow system_app        sysfs_powerenable:file  { read open write getattr};

?这样修改后第三方app也可以修改这个status节点了,我这里写这个status节点后usb adb会物理断开。?

六、整个过程需要修改的内容

1、添加文件device/rockchip/common/sepolicy/vendor/powerenable.te

allow untrusted_app_29  sysfs_powerenable:file  { read open write getattr};
allow system_app        sysfs_powerenable:file  { read open write getattr};

2、其他修改的内容


project device/rockchip/common/
diff --git a/sepolicy/vendor/file.te b/sepolicy/vendor/file.te
index 464180c..45feac3 100755
--- a/sepolicy/vendor/file.te
+++ b/sepolicy/vendor/file.te
@@ -39,6 +39,7 @@ type sysfs_timestamp_switch, sysfs_type, fs_type;
 type sysfs_video, sysfs_type, fs_type;
 type sysfs_fb, fs_type, sysfs_type;
 type sysfs_hdmi, fs_type, sysfs_type, mlstrustedobject;
+type sysfs_powerenable, fs_type, sysfs_type, mlstrustedobject;
 type sysfs_dev, fs_type, sysfs_type, mlstrustedobject;
 type sysfs_lut, fs_type, sysfs_type, mlstrustedobject;
 type sysfs_lcdc, fs_type, sysfs_type, mlstrustedobject;
diff --git a/sepolicy/vendor/file_contexts b/sepolicy/vendor/file_contexts
old mode 100644
new mode 100755
index e0a46b2..1e5e005
--- a/sepolicy/vendor/file_contexts
+++ b/sepolicy/vendor/file_contexts
@@ -220,4 +220,6 @@
 
 #flash_img
 /vendor/bin/flash_img.sh u:object_r:vendor_install_recovery_exec:s0
+/sys/devices/platform/thermal-camera-control/powerenable   u:object_r:sysfs_powerenable:s0
+/sys/devices/platform/thermal-camera-control/status   u:object_r:sysfs_powerenable:s0
 

project system/sepolicy/
diff --git a/prebuilts/api/30.0/private/app_neverallows.te b/prebuilts/api/30.0/private/app_neverallows.te
old mode 100644
new mode 100755
index 1157187..f01eb91
--- a/prebuilts/api/30.0/private/app_neverallows.te
+++ b/prebuilts/api/30.0/private/app_neverallows.te
@@ -90,7 +90,7 @@ neverallow all_untrusted_apps file_type:file link;
 neverallow all_untrusted_apps sysfs_net:file no_rw_file_perms;
 
 # Do not allow any write access to files in /sys
-neverallow all_untrusted_apps sysfs_type:file { no_w_file_perms no_x_file_perms };
+#neverallow all_untrusted_apps sysfs_type:file { no_w_file_perms no_x_file_perms };
 
 # Apps may never access the default sysfs label.
 neverallow all_untrusted_apps sysfs:file no_rw_file_perms;
diff --git a/private/app_neverallows.te b/private/app_neverallows.te
old mode 100644
new mode 100755
index 1157187..f01eb91
--- a/private/app_neverallows.te
+++ b/private/app_neverallows.te
@@ -90,7 +90,7 @@ neverallow all_untrusted_apps file_type:file link;
 neverallow all_untrusted_apps sysfs_net:file no_rw_file_perms;
 
 # Do not allow any write access to files in /sys
-neverallow all_untrusted_apps sysfs_type:file { no_w_file_perms no_x_file_perms };
+#neverallow all_untrusted_apps sysfs_type:file { no_w_file_perms no_x_file_perms };
 
 # Apps may never access the default sysfs label.
 neverallow all_untrusted_apps sysfs:file no_rw_file_perms;

七、有价值的参考文章:

SeLinux问题解决方法

Android/SELinux 添加 AVC 权限 - 码农教程

[Android Framework]Android 11 SELinux avc权限解决方法_usmaI的博客-CSDN博客_android avc 权限

android selinux报avc denied权限和编译报neverallow解决方案_楼中望月的博客-CSDN博客_android avc: denied

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-07-21 21:40:09  更:2022-07-21 21:41:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 5:01:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码