快速修改验证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能够正常工作并记录所有必要的信息。

相关推荐

  1. 快速修改验证Sepolicy(Selinux)

    2024-06-10 06:56:03       10 阅读
  2. Android Studio中快速修改包名

    2024-06-10 06:56:03       24 阅读
  3. 自动化脚本:快速修改Linux主机IP地址配置

    2024-06-10 06:56:03       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-10 06:56:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-10 06:56:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-10 06:56:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-10 06:56:03       20 阅读

热门阅读

  1. 浅谈什么是Google GKE?Auto Pilot模式是什么?

    2024-06-10 06:56:03       10 阅读
  2. 4、Spring之Bean生命周期~获取Bean

    2024-06-10 06:56:03       10 阅读
  3. DeepSpeed入门

    2024-06-10 06:56:03       7 阅读
  4. 使用GoAccess分析nginx日志

    2024-06-10 06:56:03       12 阅读
  5. 亿图图示使用教程

    2024-06-10 06:56:03       10 阅读
  6. $nextTick的使用场景介绍

    2024-06-10 06:56:03       12 阅读
  7. Web前端电话咨询:深度解析与实用指南

    2024-06-10 06:56:03       8 阅读
  8. 带你学习Mybatis之mybatis实现分页

    2024-06-10 06:56:03       12 阅读
  9. 联邦学习中的非独立同分布Non-IID

    2024-06-10 06:56:03       9 阅读
  10. Elasticsearch 认证模拟题 - 12

    2024-06-10 06:56:03       10 阅读