快速修改验证Sepolicy(Selinux)

一,判断是否为Sepolicy问题

Step1. 当某个进程出问题时,举个例子,比如so明明存在却无法link,那么看日志里是否有相关的avc:

avc: denied { open } for path="/data/system/myapp.config" dev="dm-0" ino=4538462 scontext=u:r:platform_app:s0:c512,c768 tcontext=u:object_r:system_data_file:s0 tclass=file permissive=0 app=com.android.launcher3

Step2. 临时关闭Selinux

adb shell
# 设置为Permissive模式
setenforce 0
# 看一下成功没
getenforce

上述方法重启后失效,仅限临时验证。

Step3. 看问题是否消失

如果log没有avc错误。消失了就是Selinux的问题。

二,快速修改

其实很好修改,再来看这句日志:

avc: denied { open } for path="/data/system/myapp.config" dev="dm-0" ino=4538462 scontext=u:r:platform_app:s0:c512,c768 tcontext=u:object_r:system_data_file:s0 tclass=file permissive=0 app=com.android.launcher3

这句日志的意思是:{被拒绝的动作} name=“客体名称” scontext=u:r:主体上下文:s0 tcontext=u:object_r:客体上下文:s0 tclass=客体类型

缺少的权限:{ open }

谁缺少权限:scontext=u:r:platform_app:s0:c512

对哪个文件缺少权限:tcontext=u:object_r:system_data_file:s0

什么类型的文件:tclass=file

也就是说:在platform_app进程对system_data_file类型的file缺少open 权限

在platform_app.te(device\qcom\sepolicy\generic\vendor\common\platform_app.te,找到自己项目中使用的相应的te文件)文件中添加:

allow platform_app system_data_file:file { open };

另外一种情况,再来看这句日志:

avc: denied { read } for name="libxxx.so" dev="xxx" ino=xxx scontext=u:r:abc:s0 tcontext=u:object_r:vendor_file:s0 tclass=file permissive=0

如果abc这个主体上下文不存在(全局搜下,正常都会有,没有说明是你自己独创的),那就要在file_context文件中加入

/vendor/bin/hw/android\.hardware\.abc@1\.0-service    u:object_r:abc_exec:s0

前面的abc对应文件名字,不一定是这个我只是举个例子。然后新建abc.te,开头写入:

type abc, domain;# allow init to launch processes in this context
type abc_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(abc)

类似的。然后下面再加上allow那个权限。

到这来就可以解决avc的权限报错问题了,如果需要进一步了解seLinux的机制可以往下继续看。

三,selinux查看权限

在SELinux(Security-Enhanced Linux)中,权限和访问控制是通过安全上下文(security contexts)和策略(policy)来管理的。安全上下文定义了文件、进程和端口的类型、用户和角色属性,而策略则定义了这些属性之间的允许和拒绝关系。

要查看SELinux的权限和设置,你可以使用多种命令和工具。以下是一些常用的方法:

1,查看文件的安全上下文:
使用ls -Z命令可以查看文件或目录的安全上下文。例如:

ls -lZ /path/to/file

输出将包括文件的权限、所有者、组以及安全上下文(如unconfined_u:object_r:httpd_sys_content_t:s0)。

2,查看SELinux状态:
使用getenforce命令可以查看SELinux当前的工作模式(Enforcing、Permissive或Disabled)。

getenforce

3,查看进程的安全上下文:
使用ps -eZ命令可以查看进程的安全上下文。

ps -eZ | grep process_name

四,Selinux工作模式

SELinux(Security-Enhanced Linux)有三种主要的工作模式,这些模式决定了SELinux在系统上实施安全策略的方式。以下是SELinux的三种工作模式的详细解释:

1,Enforcing模式(强制模式):
违反SELinux规则的行为将被阻止并记录到日志中。
在此模式下,SELinux完全启用,并强制执行所有配置的安全策略。任何尝试违反这些策略的行为都将被阻止,并且相关信息将被记录到系统日志中。
这是SELinux的默认工作模式,用于提供最高级别的系统安全性。

2,Permissive模式(宽容模式):
违反SELinux规则的行为只会记录到日志中,但不会阻止。
在此模式下,SELinux仍然监控所有进程和文件访问,但即使检测到违反策略的行为,也不会阻止它们。这允许管理员在不中断系统服务的情况下观察和分析SELinux的日志,以了解哪些策略可能需要调整。
此模式通常用于调试或测试SELinux策略,以便在将其部署到生产环境之前识别和解决潜在问题。

3,Disabled模式(关闭模式):
SELinux被完全关闭,系统使用传统的Linux自主访问控制(DAC)机制。
在此模式下,SELinux不执行任何安全策略,系统行为与传统的Linux系统相同。这通常用于不需要SELinux提供额外安全性的环境,或者当SELinux的配置导致系统无法正常运行时。

需要注意的是,SELinux的工作模式可以在/etc/selinux/config文件中进行配置。如果要从Disabled模式切换到Enforcing或Permissive模式,或者从Enforcing/Permissive模式切换到Disabled模式,通常需要重启系统才能使更改生效。然而,Enforcing和Permissive模式之间可以通过setenforce 1|0命令进行快速切换,而无需重启系统。

此外,SELinux日志的记录需要借助auditd.service这个服务,因此请不要禁用它,以确保SELinux能够正常工作并记录所有必要的信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/24874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV学习(4.8) 图像金字塔

1.目的 在这一章当中, 我们将了解图像金字塔。我们将使用图像金字塔创建一个新的水果,“Orapple”我们将看到这些功能: cv.pyrUp() , cv.pyrDown() 在通常情况下我们使用大小恒定…

node的安装

node是前端开发环境,所以运行前端程序需要安装和配置node 1. 下载安装node 去node官网选择你需要的版本进行下载 Node.js — Download Node.js (nodejs.org) ​ 下载到本地后一路点击next傻瓜式安装,安装成功后测试是否安装成功 node -v 显示node版…

几种数据集格式

在机器学习和计算机视觉领域,有多种数据集格式被广泛使用来存储和交换数据,尤其是图像数据。以下是一些常见的数据集格式: JSON (JavaScript Object Notation): 一种轻量级的数据交换格式,易于人阅读和编写,也易于机器…

【Ardiuno】使用ESP32网络功能调用接口数据(图文)

接着上文连通wifi后,我们通过使用HTTPClient库进行网络相关操作,这里我们通过http协议进行接口调用。 为了简化操作,这里使用了本地服务器上的文件作为接口,正常操作时会调用接口后,将服务器返回的数据进行解析&#…

白话解读网络爬虫

网络爬虫(Web Crawler),也称为网络蜘蛛、网络机器人或网络蠕虫,是一种自动化程序或脚本,被用来浏览互联网并收集信息。网络爬虫的主要功能是在互联网上自动地浏览网页、抓取内容并将其存储在本地或远程服务器上供后续处…

独孤思维:高考那段日子,我痛不欲生

今天是高考日。 回想自己当年高考的情景,还历历在目。 备考那段时间,每天没日没夜做卷子。 惴惴不安,每天焦虑,不得安宁。 当时还在想,高考完了以后,要怎么怎么玩,怎么怎么野。 但是真的到…

【模拟-BM99 顺时针旋转矩阵】

题目 BM99 顺时针旋转矩阵 描述 有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵。 分析 模拟,写几个样例,分析一下新矩阵元素下标与原矩阵元素…

游戏心理学Day08

从本质上讲,游戏是对现实世界规律的简化和明晰化,并以此为基础,对现实世界进行建模。通过游戏,我们认识到艰苦的工作原来就是 幸福的来源,只要工作目标明确,充满挑战,反馈及时和充满社会化合作…

python记录之字符串

在Python中,字符串是一种非常常见且重要的数据类型,用于存储文本信息。下面,我们将对Python字符串进行深入的讲解,包括其基本操作、常见方法、格式化以及高级特性。 1. 字符串的创建 在Python中,字符串可以通过单引号…

编译原理-语法分析(实验 C语言)

语法分析 1. 实验目的 编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析 2. 实验要求 利用C语言编制递归下降分析程序,并对简单语言进行语法分析 2.1 待分析的简单语言的语法 用扩充的BNF表示如下: …

牛客NC32 求平方根【简单 二分 Java/Go/C++】

题目 题目链接: https://www.nowcoder.com/practice/09fbfb16140b40499951f55113f2166c 思路 Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** para…

【python报错】TypeError: ‘dict_values‘ Object IsNot Subscriptable

【Python报错】TypeError: ‘dict_values’ object is not subscriptable 在Python中,字典(dict)提供了几种不同的视图对象,包括dict_keys、dict_values和dict_items。这些视图对象允许你以只读方式遍历字典的键、值或键值对。如果…

vue 创建一个新项目 以及 手动配置选项

【Vue】3.0 项目创建 自定义配置_vue3.0-CSDN博客

GPT-4o仅排第二!北大港大等6所高校联手,发布权威多模态大模型榜单!

多模态大模型视频分析能力榜单出炉: Gemini 1.5 Pro最强,GPT-4o仅排第二? 曾经红极一时的GPT-4V屈居第三。 3.5研究测试:hujiaoai.cn 4研究测试:askmanyai.cn Claude-3研究测试:hiclaude3.com 最近&#…

WordPress网站更换域名后如何重新激活elementor

在创建WordPress网站时,我们常常需要更改域名。但是,在更换域名后,你可能会遇到一个问题:WordPress后台中的Elementor插件授权状态会显示为不匹配。这时,就需要重新激活Elementor插件的授权。下面我会详细说明如何操作…

MySQL8 全文索引

文章目录 创建索引使用索引总结 创建索引 之前未尝试过使用MySQL8的全文索引,今天试一试看看什么效果,否则跟不上时代了都。   创建索引非常简单,写句SQL就行。 create table goods(id integer primary key auto_increment,name varchar(2…

编译原理-词法分析(实验 C语言)

编译原理-词法分析 1. 实验目的 设计、编写并调试一个词法分析程序,加深对词法分析原理的理解 2. 实验要求 2.1 待分析的简单语言的词法 关键字:begin,if,then,while,do,end 所有关键字都是…

前端如何封装自己的npm包并且发布到npm注册源

前言 在前端开发中,复用代码是一种常见且高效的实践。通过封装和发布自己的npm包,你可以轻松地在多个项目之间共享代码,并且贡献给社区。以下是一步一步指导你如何封装自己的npm包并发布到npm注册源。 步骤一:创建并设置项目 首…

智驾”IT运维,探索企业高效管理新航道——运维智慧驾驶舱

在信息化高速发展的今天,企业对于稳定、高效的IT运维管理需求日益迫切。运维智慧驾驶舱,作为新一代的运维解决方案,正以其独特的优势,引领着企业IT运维的新方向。当它与优秀的监控系统相结合时,比如监控易,…

28-unittest批量执行(discover)

unittest框架提供了创建测试用例、测试套件以及批量执行的解决方案。 利用单元测试框架创建测试类,可以把每个测试方法看成是一个最小的单元, 由测试容器组装打包起来,然后可以统一执行,最后输出测试报告。 一、UnitTest核心要素…