Android selinux配置和用法

Android系统10 RK3399 init进程启动(二十七) Selinux Type和Attribute Selinux实现的是强制类型访问模型, 可以简单理解一切都是类型, 不管是主体还是客体,都必须类型化, 如客体和客体和主体都需要设置安全上下文, 客体格式为u:r:xxx:s0, 主体为u:object_r:yyy:s0, 其中xxx和yyy是可以自定义的, 但是需要通过type进行类型化声明, 你可以理解type为一个动词,为xxx取名,客体一般声明type, 主体一般声明为domain... 阅读详情
SELINUX相关的代码目录:
1)kernel/msm-3.18/security/selinux/
2)external/selinux/
3)用BOARD_SEPOLICY_DIRS添加的各te文件和安全配置文件,主要包括device/<oem_name>/sepolicy/<product_name>/和system/sepolicy/,以及其他功能模块添加的配置文件。

Android中对SELINUX来说,有两个类型,一种是文件,一种是进程。用ps -Z可以查看当前进程所拥有的selinux的权限。
LABEL                          USER     PID   PPID  NAME  
u:r:init:s0                    root      1     0     /init  
u:r:kernel:s0                  root      2     0     kthreadd
u:r:kernel:s0                  root      258   2     irq/322-HPH_R O  
u:r:logd:s0                    logd      259   1     /system/bin/logd  
u:r:healthd:s0                 root      260   1     /sbin/healthd  
u:r:lmkd:s0                    root      261   1     /system/bin/lmkd  
u:r:servicemanager:s0          system    262   1     /system/bin/servicemanager  
u:r:vold:s0                    root      263   1     /system/bin/vold  
u:r:surfaceflinger:s0          system    264   1     /system/bin/surfaceflinger  
u:r:tctd:s0                    root      265   1     /system/bin/tctd  
u:r:rfs_access:s0              system    268   1     /system/bin/rfs_access  
u:r:tee:s0                     system    271   1     /system/bin/qseecomd  
u:r:kernel:s0                  root      280   2     kworker/3:1H  
u:r:kernel:s0                  root      290   2     kauditd  
u:r:rmt_storage:s0             nobody    291   1     /system/bin/rmt_storage  
u:r:shell:s0                   shell     292   1     /system/bin/sh  
u:r:netd:s0                    root      295   1     /system/bin/netd  
u:r:debuggerd:s0               root      296   1     /system/bin/debuggerd  
u:r:tee:s0                     system    297   271   /system/bin/qseecomd 
上述的u为Android的唯一user(有待确认),第二个参数r表示进程,相对的object_r表示文件,第三个参数是这个进程的type,在andorid里面,定义了100多个type,第四个参数s0是一个安全的等级。
想要查看相关SELINUX权限的话,需要去执行ls -Z
drwxr-x--x root     sdcard_r          u:object_r:rootfs:s0 storage  
drwx--x--x root     root              u:object_r:tmpfs:s0 synthesis  
dr-xr-xr-x root     root              u:object_r:sysfs:s0 sys  
drwxr-xr-x root     root              u:object_r:system_file:s0 system  
drwxrwxr-x system   tctpersist        u:object_r:tct_persist_file:s0 tctpersist  
lrwxrwxrwx root     root              u:object_r:rootfs:s0 tombstones -> /data/tombstones  
-rw-r--r-- root     root              u:object_r:rootfs:s0 ueventd.qcom.rc  
-rw-r--r-- root     root              u:object_r:rootfs:s0 ueventd.rc  
上述的rootfs和system_file等为文件的type。

SELINUX规则配置
在te文件中,我们一般遇到的语法是这样的:
rule_name source_type target_type:class perm_set
解读为:为source_type设置一个rule_name的规则,规则是对target_type的class 进行 perm_set的操作

selinux有两种工作模式(可通过adb shell getenforce查看):
permissive:所有操作都被允许(即没有MAC),但是如果有违反权限的话,会记录日志
enforcing:所有操作都会进行权限检查

type命令格式为:
type type_id [alias alias_id,] [attribute_id]
声明一个type_id(别名为alias)具有属性attribute。以后可以用attribute来管理包含相同的属性的type的安全权限。

class命令的格式为:
class class_name [ inherits common_name ] { permission_name ... }
inherits表示继承了common定义的权限,然后自己额外实现了permission_name的权限

在te文件中常见的四种命名的规则:
allow:赋予某项权限。
allowaudit:audit含义就是记录某项操作。默认情况下是SELinux只记录那些权限检查失败的操作。allowaudit则使得权限检查成功的操作也被记录。注意,allowaudit只是允许记录,它和赋予权限没关系。赋予权限必须且只能使
用allow语句。
dontaudit:对那些权限检查失败的操作不做记录。
neverallow:不赋予某项权限。

举例如下:
type init, domain;  
将init关联到domain,即将domain设置为init类型的属性

allow init unlabeled:filesystem mount;  
允许init类型对unlabeled类型的filesystem进行mount的操作

allow init fotad:unix_stream_socket { bind create };  
允许init类型对fotad类型的unix_stream_socket 进行bind和create的操作

neverallow { appdomain -unconfineddomain } kmem_device:chr_file { read write };  
绝对不允许app(除了有unconfineddomain属性的app)对kmem_device类型的字符设备进行读写的操作

allow {user_t domain} {bin_t file_type sbin_t}:file execute ;  
允许user_t和domain属性的类对bin_t, file_type, sbin_t类型的file进行可执行的操作

type_transition system wifi_data_file:sock_file system_wpa_socket;  
当一个类型为system的类别去进行wifi_data_file类型的sock_file访问时,类型默认切换到system_wpa_socket

如果下面这条语句想要执行成功
type_transition init_t apache_exec_t:process apache_t;
至少首先声明下面的三条规则:
allow init_t apache_exec_t:file execute;
allow init_t apache_t:process transition;
allow apache_t apache_exec_t:file entrypoint;
注:type_transition和type_change的语法规则是一样的

如果要配置的规则很多,可以先抓取运行时logcat的权限拒绝的log,并先用grep工具过滤一下:
$ grep "avc: *denied" log.txt > denied.txt
$ cat denied.txt
<14>[  389.521062] avc:  denied  { set } for property=audio.ftm.rcv_reverse scontext=u:r:system_app:s0 tcontext=u:object_r:default_prop:s0 tclass=property_servic
然后再使用pc工具生成安全策略,命令audit2allow用来一次性生成所有安全策略,输入为前面抓取的 log
$ audit2allow -i denied.txt
Linux系统:selinux规则配置详解 SELinux(Security-Enhanced Linux)是一个Linux内核模块,它实现了强制访问控制(MAC)机制,可以对系统中的各种资源(文件、进程、网络端口等)进行细粒度的访问控制,从而提高了系统的安全性主要作用是强化系统的安全性,通过访问控制来防止恶意程序对系统进行攻击。它可以限制程序的权限,防止它们对系统资源进行未经授权的访问和操作,从而有效地保护系统免受攻击。 阅读详情

相关推荐

深入解析安卓Vendor.img的构建流程与SELinux策略配置

本文深入解析安卓Vendor.img的构建流程与SELinux策略配置,详细介绍了使用e2fsdroid等工具制作Vendor.img镜像的方法,并重点阐述了如何正确配置file_contexts等SELinux策略文件以确保系统安全与硬件功能正常。内容涵盖基础解析、工具链使用、实战案例及常见问题调试,为安卓ROM定制开发者提供全面指导。

efc123456的博客 887

SELinux配置

一:SELinux简介 在SELinux访问控制体系的限制下,进程只能访问那些在他的任务中所需要的文件,从而实现系统的安全性。 1:常见的读取控制机制 (1)DAC (Discretionary Access Control,任意式读取控制),每个对象都会记录一个拥有者的信息。只要是对象的拥有,就可以获得该对象的完全控制权限。DAC允许拥有者完全权限。其他需要读取该对象的时候,必须授予适当的权限。但是每个对象仅有一组拥有者的信息,如果需要更复杂的读取控制能力,必须使用ACL。ACL是DAC的延伸,.

gaby0611的博客 3489

SELinux 简介与配置指南

安全上下文(Security Context):SELinux 为每个进程和文件对象分配一个安全上下文,该上下文由标签组成,用于标识对象的安全属性。强制访问控制(MAC):与传统的自由访问控制(DAC)不同,SELinux 使用强制访问控制来限制进程和文件对象之间的交互。SELinux Booleans:SELinux Booleans 是可以切换的开关,用于启用或禁用特定的 SELinux 功能。通过了解 SELinux 的基本概念和配置步骤,您可以更好地保护您的服务器并提高系统的安全性。

IsdCoding的博客 857

SELinux详解

SELinux详解 什么是SELinux 当初设计的目标:避免资源的误用 传统的文件权限与账号主要的关系:自主访问控制(DAC) 以策略规则制定特定进程读取特定文件:强制访问控制(MAC) SELinux的运行模式 安全上下文 进程与文件SELinux类型字段的相关性 SELinux 3种模式的启动、关闭与查看 三种模式的运行状态 SELinux的启动与关闭 SELinux策略内的规则管理 SELinux各个规则的布尔值查询getsebool SELinux类型查询seinfo、sesearch seinf

不知道 1万+

安卓S平台userroot版本SELinux权限配置

user root版本,开启usb调试,无法进行数据传输,只能充电,电脑也无法成功连接adb由于对应版本必现。

shusuanly的博客 922

Android SELinux——策略文件配置结构(八)

在 Android 系统中,SELinux 主要是通过一系列配置文件来进行管理和配置的。这些配置文件涵盖了策略定义、标签映射、签名信息等多个方面。

小旭的专栏 1450

【Android】如何配置打开和关闭selinux

直接配置init进程的Android.bp文件和uboot配置的值最佳,Android.bp下面-DALLOW_PERMISSIVE_SELINUX=0则是关闭,=1则是打开;bootloader/uboot-repo/bl33/board/公司名/configs/对应芯片的配置头文件.h,"EnableSelinux=enforcing\0"\是打开,"EnableSelinux=permiss...

xlnaan的博客 1万+

论文阅读笔记:Extended Vision Transformer (ExViT) for Land Use and Land Cover Classification

注意力机制驱动的深度模型最近取得了成功,如最具代表性的视觉转换器(ViT),吸引了一波高级研究来探索它们对更广泛领域的适应。然而,遥感(RS)领域中基于Transformer的方法更关注单模态数据,这可能会在充分利用不断增长的多模态地球观测数据时失去可扩展性。为此,我们提出了一种新的多模式深度学习框架,通过在最小修改的情况下扩展传统的ViT,针对土地利用和土地覆盖(LULC)分类任务。

嗑研狗的日常 945

linux 安卓 权限获取,为Android自定义服务配置SElinux权限

1,配置服务类型这里有两种选择:使用已有的服务类型:// /device/xxx/common/sepolicy/private/service_contexts// “hatpreview”是自定义服务的服务名,即注册到ServiceManager的服务名hatpreview u:object_r:default_android_se...

weixin_34530489的博客 1084

VC中基于TWAIN协议控制扫描仪-----初级版

PS:本人是C++小白一枚,在研究此功能时不知走了多少弯路

a1101000099的专栏 8789

高通camx架构学习(零)—— 深入理解Camera 硬件抽象层

从上面的定义可以看出,主要是通过hw_module_t 代表了模块,通过其open方法用来打开一个设备,而该设备是用hw_device_t来表示,其中除了用来关闭设备的close方法外,并无其它方法,由此可见谷歌定义的HAL接口,并不能满足绝大部分HAL模块的需要,所以谷歌想出了一个比较好的解决方式,那便是将这两个基本结构嵌入到更大的结构体内部,同时在更大的结构内部定义了各自模块特有的方法,用于实现模块的功能,这样,一来对上保持了HAL的统一规范,二来也扩展了模块的功能。

图像学习之旅 1669

Android selinux配置

最近项目上遇到Android selinux权限配置的问题,Android O之前的版本与Android O及之后的版本有较大的差异。Android O引入了Treble机制,为了防止system.img和vendor.img 中的数据、服务、应用等相互依赖、调用和 引用,谷歌大幅度的更新了selinux权限管理,在Android O及以后的版本中,sepolicy进行了分离,与system相关的...

peilong1988的专栏 883

保姆级教程:用SSH手动重建黑群晖RAID1阵列,修复‘存储空间损毁’

本文提供了一份详细的SSH手动重建黑群晖RAID1阵列的教程,帮助用户修复‘存储空间损毁’问题。通过深入解析mdadm软RAID的底层逻辑,从诊断到重建的全过程,确保用户能够掌握黑群晖存储池的修复技术。适用于技术爱好者和系统管理员。

weixin_30319153的博客 293

安卓SELinux模式调整终极指南:自动配置安全策略

在安卓系统开发和深度定制过程中,SELinux(安全增强型Linux)的安全策略配置是至关重要的环节。SELinuxModeChanger作为一款专业的系统工具,能够帮助开发者和技术用户在设备每次启动时自动设置所需的SELinux模式,无论是permissive(宽容模式)还是enforcing(强制模式),都能轻松实现。 ## 核心功能深度解析 ### 自动化安全策略配置 该应用的核心价值在

gitblog_00692的博客 1119

【同等学力】01-逻辑符号表达

F(x): x是确诊者,G(x):x有症状F(x): x是老人,G(x):x是宠物,L(x,y): x喜欢y。

super_mochi1 1880

北斗导航 | 接收机自主完好性监测(RAIM)算法近三年研究现状总结(2022-2025)

近三年RAIM算法已从传统的单故障检测演进为多星座协同、智能融合的复杂系统,在航空、自动驾驶等安全关键领域实现规模化应用。未来需重点突破城市复杂环境适应性和标准化体系建设,推动技术从"可用"向"可信"跨越。

尘世冰封的专栏 440

android 9.0 selinux 策略配置

主要配置: (1)文件; 在 file.te 中声明一个文件类型; type my_file, file_type, data_file_type, core_data_file_type; 在 file_contexts 文件中关联实际的文件路径和文件类型; /data/my_file(/.*)? u:object_r:my_file:s0 注意 my_file 的类型,如果是data目录下的,要添加 core_data_file_type; 是 vendor目

zhbpd的专栏 2495

CMake是什么?为什么学习CMake

CMake的主要作用和重要性,包括其在跨平台构建中的应用、如何支持多种编译器及操作系统,以及它在管理大型和复杂项目中的优势。

小鱼酱的博客 3871

Android SELinux配置

文章目录1.权限警告2.权限警告语法3.权限配置语法4.配置普通权限5.配置ioctl特殊权限6.配置新增节点权限 1.权限警告 最近在调试Android的selinux配置,主要出现了一下三种权限警告,在此记录一下 avc: denied { create } for pid=2984 comm=“test_app” path=&amp;amp;amp;amp;quot;/dev/socket&amp;amp;amp;amp;quot; scontext=u:r:tes...

zxlworking1的专栏 2388

【推荐100个unity插件】unity易于使用模块化设计的天空、体积云和天气系统——Enviro 3

Enviro 3是一款功能强大的Unity天空与天气系统插件,提供动态天空、体积云、天气模拟等丰富功能。安装时需将预制体拖入场景并配置主相机,URP支持需激活深度纹理和添加渲染特性。模块化设计允许自由添加/移除时间、光照、雾效等模块,并通过API控制参数。推荐配合色调映射(如ACES模式)获得最佳视觉效果。插件支持季节、温湿度模拟及闪电风暴等特效,适用于需要逼真环境渲染的Unity项目。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2094

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

配置selinux的策略_Android SeLinux安全策略配置

众所周知,自从Android4.3版本引入SeLinux后,这一新的安全机制会对进程的权限进行最小化的限制,以保证即使受到攻击,也不会对系统整体造成太大的影响。对于SeLinux的具体机制分析不是本文的重点,这里不做赘述。前阵子商务的同事送样机去客户处测试,客户方面为安全考虑提出需要关闭root,接到这样一个需求,因为我们的系统(Android5.1)并未开放superuser权限,只是把seli...

weixin_35765731的博客 820

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

终极SELinux模式切换工具:安卓安全配置完整指南

SELinux模式切换工具是一个简单实用的安卓应用程序,能够在每次启动时将SELinux设置为所需的模式。这款SELinux模式切换工具专门设计用于管理Android设备的安全增强Linux配置,让用户能够轻松在强制模式和宽容模式之间进行切换。 ## 🔧 什么是SELinux模式切换? SELinux(Security-Enhanced Linux)是Android系统中的重要安全组件,它通

gitblog_00788的博客 695

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Android SELinux介绍和配置

SELinux是什么? SELinux是一套完整的安全策略,最开始是美国国家安全局和一些公司联合设计为了针对Linux系统的安全隐患而产生的一套系统,它为每一个进程,每一个文件,每一个属性都定义了标签,用来控制进程对文件的操作的权限控制!在安卓里面,SELinux有三种状态: enforce模式:强制模式,必须有配置权限才能执行相应的访问/操作permissive模式:宽容模式,打印记录出现的越权行为,但是不禁止该访问/操作disable:关闭模式,关闭SELinux,不受SELinux权限控制...

fanx9339的博客 5498

[Android]开机自启动脚本和selinux权限配置

概述 在前段时间的工作中,需要开发一个开机自动启动的脚本,现把开发过程记录一下 主要框架 编写一个可以开机自动启动的脚本,方法就是通过rc文件,在boot_complete=1时,去启动这个服务,那么,可以先基于以上思路,创建实现脚本所需要的文件。 通常来说,我这个脚本是要放在vendor分区的,因此将脚本放到vendor目录下,参考其他的脚本,创建3个空的文件如下: multi_tpinsmod/ //脚本文件夹 ├── Android.bp //bp文件,用于放置编译参数 ├── multi_t

骑驴赶集市的博客 9466

Android8.1 Selinux权限配置说明

一.系统自带服务,程序报错 场景: 打开Selinux后, 客户APP 无法运行, 查看log发现是Selinux 权限报错. 过滤日志: logcat | grep avc 错误日志 m.veb.facecheck: type=1400 audit(0.0:66): avc: denied { execute } for path="/data/data/com.veb.facecheck/.jiagu/libjiagu.so" dev=“mmcblk1p17” ino=16090 scontext=u:

Godke的博客 1352

Android7.0 APP调用驱动流程 Selinux 权限配置

最近受到肺炎疫情的影响,刚复工不久事情也没那么多,于是就整理下以前做的东西,写下博客好了。其实工作之余也会经常写工作相关的技术文档,只是不习惯发布到博客而已,毕竟有些也是跟公司相关的技术,发布到网上也可能不太好。不过有些自己花时间去学习倒可以跟大家分享讨论与进步。 首先在这一非常事情,感觉一大群逆行者奋抗前线。 Android 操作系统层面开发在 2017年左右开发过。从APP层、Syste...

1938
上一篇: Android recovery支持adb shell
下一篇: SEAndroid实现机理
makeyourprogress
博客等级 码龄11年 26粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值