简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀
优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
1.前言
本篇目的:audit2allow自动生成Selinux配置。
2.SeLinux介绍
-
SELinux,全称Security-Enhanced Linux,是一种基于Linux内核的安全机制。它通过强制访问控制(MAC)来增强Linux系统的安全性,对于保护系统资源和防止未经授权访问非常有帮助。本文将简要介绍SELinux的原理和功能。
-
SELinux最初是由美国国家安全局(NSA)开发的,于2000年首次集成到Linux内核中。它通过将每个对象(如文件、进程和用户)和动作(如读写、执行)分配给一个安全上下文来实现安全访问控制。安全上下文包括主体和客体,主体代表拥有访问权限的主体,而客体代表被保护的系统资源。
-
SELinux通过使用访问控制策略来管理对象和动作之间的访问权限。访问控制策略定义了允许或禁止一个主体访问一个特定的客体的规则。这种严格的策略强制执行防止非授权访问,有效地减少了系统受到攻击的风险。
-
SELinux的主要功能包括:
-
强制访问控制(MAC):SELinux在每个对象和动作上强制实施访问控制策略,即使用户具有root权限也不能绕过这些策略。
-
细粒度访问控制:SELinux使管理员能够配置文件和进程的访问权限,实现更精确的访问控制。
-
角色基准访问控制:SELinux允许系统管理员为特定的用户角色分配不同的安全策略,以便管理访问权限。
-
安全上下文:SELinux使用安全上下文来标记对象和动作,并通过语义丰富的标签来定义对象之间的关系。
-
弹性:SELinux的策略可根据实际需求进行定制,以满足不同环境下的安全需求。
-
虽然SELinux提供了强大的安全功能,但它也可能增加了配置和管理的复杂性。因此,对于普通用户来说,理解SELinux的工作原理并正确配置它可能需要一定的学习和实践。
-
总之,SELinux是一种基于Linux内核的安全增强机制,通过强制访问控制、细粒度访问控制和安全上下文等功能来提高系统的安全性。它在Linux系统中得到广泛应用,并在防止未经授权访问和减少系统受到攻击的风险方面发挥着重要作用。
3.audit2allow自动生成selinux规则
<1>.配置Android源码环境
# source build/envsetup.sh
# lunch xxx
<2>.抓带"avc"的log
# adb logcat | tee avc.txt
<3>.自动转换avc.txt到selinux规则
# adb pull /sys/fs/selinux/policy
# adb logcat -d | ./external/selinux/prebuilts/bin/audit2allow -p policy
- 生成selinux规则
#============= boringssl_self_test ==============
allow boringssl_self_test self:capability sys_admin;
#============= dexoptanalyzer ==============
allow dexoptanalyzer app_data_file:dir search;
#============= init-insmod-sh ==============
allow init-insmod-sh self:capability sys_admin;
#============= system_server ==============
allow system_server vendor_default_prop:file read;
注意:当前PC的python版本一定是: python2.7。否则会出现如下语法问题:
File "external/selinux/prebuilts/bin/audit2allow", line 3
if [ -z "${ANDROID_HOST_OUT}" ]; then
^
SyntaxError: invalid syntax
<4>.将规则添加到device/xxx/common/sepolicy/xxx.te文件中
allow boringssl_self_test self:capability sys_admin;
#============= dexoptanalyzer ==============
allow dexoptanalyzer app_data_file:dir search;
#============= init-insmod-sh ==============
allow init-insmod-sh self:capability sys_admin;
#============= system_server ==============
allow system_server vendor_default_prop:file read;
<4>.编译
# make -j12 sepolicy