Android SELinux 小结

Linux安全机制之Selinux 一、引言 1.1、什么是Selinux Selinux是一种MAC(强制访问控制)安全机制,是对传统DAC(直接访问控制)机制的加强,而非替换,定义传统进程对文件对象的访问权限,如果不满足则无法执行,不管当前是什么用户。Selinux是一种MAC(强制访问控制)安全机制,是对传统DAC(直接访问控制)机制的加强,而非替换,定义传统进程对文件对象的访问权限,如果不满足则无法执行,不管当前是什么用户。 本文下面讲的类似内容,有安卓源码的小伙伴可以到类似目录(android/device/softwinne 阅读详情

Android SELinux 知识点

运行模式

SELinux 按照默认拒绝的原则运行:任何未经明确允许的行为都会被拒绝。SELinux 可按两种全局模式运行:

  • 宽容模式:权限拒绝事件会被记录下来,但不会被强制执行。
  • 强制模式:权限拒绝事件会被记录下来并强制执行。
调试中修改运行模式

获取运行模式

getenforce
//Enforcing: seLinux已经打开;        
//Permissive:seLinux已经关闭;

修改运行模式

//关闭selinux
setenforce 0 

//打开selinux
setenforce 1
编译选择运行模式
  • 在内核中启用 SELinux
// kernel/configs/android-5.4/android-base.config
CONFIG_SECURITY_SELINUX=y
  • 更改 kernel_cmdline参数
//device/qcom/msmnile_gvmq/BoardConfig.mk
BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive

这仅适用于初始制定设备政策的情况。在拥有初始引导程序政策后,请移除此参数,以便将设备恢复强制模式,否则设备将无法通过 CTS 验证。

标签、规则和域

SELinux 依靠标签来匹配操作和政策。标签用于决定允许的事项。套接字、文件和进程在 SELinux 中都有标签。SELinux 在做决定时需参照两点:一是为这些对象分配的标签,二是定义这些对象如何交互的政策。

在 SELinux 中,标签采用以下形式:user:role:type:mls_level(如u:r:init:s0),其中 type 是访问决定的主要组成部分,可通过构成标签的其他组成部分进行修改。对象会映射到类,对每个类的不同访问类型由权限表示。(type是关键中的关键。)

政策规则采用以下形式:allow domains types:classes permissions;,

#表示init进程可以对chr_file类型的 ipa_dev具有open权限
# Domain -> init
# Type -> ipa_dev
# Class -> chr_file
#Permission -> open
allow  init  ipa_dev : chr_file { open }; 

其中:

  • Domain - 一个进程或一组进程的标签。也称为域类型,因为它只是指进程的类型。
  • Type - 一个对象(例如,文件、套接字)或一组对象的标签。
  • Class - 要访问的对象(例如,文件、套接字)的类型。
  • Permission - 要执行的操作(例如,读取、写入)。
相关文件

在 Android 8.0 及更高版本中,政策位于 AOSP 中的以下位置:

  • system/sepolicy/public。其中包括所导出的用于供应商特定政策的政策。所有内容都会纳入 Android 8.0 兼容性基础架构。公共政策会保留在不同版本上,因此您可以在自定义政策的 /public 中添加任何内容。正因如此,可存放在 /public 中的政策类型的限制性更强。将此目录视为相应平台的已导出政策 API:处理 /system 与 /vendor 之间的接口的所有内容都位于这里。
  • system/sepolicy/private。包括系统映像正常运行所必需(但供应商映像政策应该不知道)的政策。
  • system/sepolicy/vendor。包括位于 /vendor 但存在于核心平台树(非设备特定目录)中的组件的相关政策。这是构建系统区分设备和全局组件的软件工件;从概念上讲,这是下述设备专用政策的一部分。
  • device/manufacturer/device-name/sepolicy。包含设备专用政策,以及对政策进行的设备自定义(在 Android 8.0 及更高版本中,该政策对应于供应商映像组件的相关政策)。
位置包含
system/sepolicy/public平台的 sepolicy API
system/sepolicy/private平台实现详情(供应商可以忽略)
system/sepolicy/vendor供应商可以使用的政策和上下文文件(供应商可以根据情况忽略)
BOARD_SEPOLICY_DIRS供应商 sepolicy
关键文件
  • BoardConfig.mk
    定义 vendor sepolicy
TARGET_SEPOLICY_DIR := ***
  • file_contexts
    需要在此处添加进程声明 (PS : 如果是增量添加,一定要在末尾空一行。否则编译会报错。)
/(vendor|system/vendor)/bin/hw/android\.hardware\.vibrator@1\.0-service       u:object_r:hal_vibrator_default_exec:s0
/(vendor|system/vendor)/bin/hw/android\.hardware\.vr@1\.0-service             u:object_r:hal_vr_default_exec:s0
/(vendor|system/vendor)/bin/hw/android\.hardware\.wifi\.offload@1\.0-service  u:object_r:hal_wifi_offload_default_exec:s0
/(vendor|system/vendor)/bin/hw/android\.hardware\.wifi@1\.0-service           u:object_r:hal_wifi_default_exec:s0
  • hal_vibrator.te
    相关进程需要申请的权限,需要在此处添加。
# HwBinder IPC from client to server
binder_call(hal_vibrator_client, hal_vibrator_server)

add_hwservice(hal_vibrator_server, hal_vibrator_hwservice)
allow hal_vibrator_client hal_vibrator_hwservice:hwservice_manager find;

# vibrator sysfs rw access
allow hal_vibrator sysfs_vibrator:file rw_file_perms;
allow hal_vibrator sysfs_vibrator:dir search;

  • hwservice.te
    声明hidl serivce 类型,需要配合hwservice_contexts一起使用。
//生命 hal_vibrator_hwservice 归为 hwservice_manager_type 一类。
type hal_vibrator_hwservice, hwservice_manager_type;
type hal_vr_hwservice, hwservice_manager_type;
type hal_weaver_hwservice, hwservice_manager_type;
type hal_wifi_hwservice, hwservice_manager_type;

  • hwservice_contexts
    用于声明HIDL service 安全上下文。
//格式   
//包名::接口      属性
//包名:android.hardware.vibrator   接口:IVibrator.hal   Type:
android.hardware.vibrator::IVibrator                u:object_r:hal_vibrator_hwservice:s0
android.hardware.vr::IVr                            u:object_r:hal_vr_hwservice:s0
android.hardware.weaver::IWeaver                    u:object_r:hal_weaver_hwservice:s0
android.hardware.wifi::IWifi                        u:object_r:hal_wifi_hwservice:s0

如何新增

辅助参考
  • /system/sepolicy/public/domain.te
  • /system/sepolicy/public/te_macros
重要类型/属性

在这里插入图片描述
在这里插入图片描述

步骤
  • 1 添加启动rc
service hal_vendorlight /vendor/bin/hw/vendorlight@1.0-service
class core
  • 2 在file_contexts 添加type
/vendor/bin/hw/vendorlight@1.0-service u:object_r:hal_vendorlight_exec:s0
  • 3 添加相关.te
# vendorlight service
type hal_vendorlight, domain;
type hal_vendorlight_exec, exec_type, file_type;

init_daemon_domain(foo)

调试相关

neverallow
  • 1 添加权限
    在mediaserver.te中添加
allow mediaserver device:chr_file { read write open};
  • 2 编译报错
libsepol.check_assertion_helper: neverallow on line 258 ofexternal/sepolicy/domain.te (or line 5252 of policy.conf) violated byallow mediaserver device:chr_file { read write open};

违反了domain.te 258:

neverallow {domain –unconfineddomain –ueventd } device:chr_file { open read write}

此句表示 所有domain(声明为domain 的域 type *, domain) 除了unconfineddomain 和 ueventd 的type之外(–unconfineddomain –ueventd, -表示移除) 都不允许对device的chr_file进行 open read write 操作。

  • 3 运行Log:
avc: denied { read write } for pid=303 comm="mediaserver"name="tfa9890" dev="tmpfs" ino=3880 scontext=u:r:mediaserver:s0 tcontext=u:object_r:device:s0tclass=chr_file permissive=0
  • 4 修改步骤:
  1. 目标名称是: tfa9890, 其在系统中的路径是: /dev/tfa9890, 是audio相关的设备文件
  2. 源类型是mediaserver, 在mediaserver.te 文件中发现其具有 audio_device 目标类型的权限
  3. 所以在file_contexts 中添加 /dev/tfa9890 u:object_r:audio_device:s0可以解决问题

通过增加 typeattribute来解决

  • 1 查看声明的属性 hal_attribute 这个宏在 te_macros 展开
# system/sepolicy/public/attribute
hal_attribute(health_storage);
hal_attribute(input_classifier);
hal_attribute(ir);
hal_attribute(keymaster);
hal_attribute(light);
hal_attribute(lowpan);
hal_attribute(memtrack);
hal_attribute(neuralnetworks);
  • 2 hal_attribute 展开后 划等号的 语法
# system/sepolicy/public/te_macros
#####################################
# hal_attribute(hal_name)
# Add an attribute for hal implementations along with necessary
# restrictions.
define(`hal_attribute', `
attribute hal_$1;
expandattribute hal_$1 true;
attribute hal_$1_client;
expandattribute hal_$1_client true;
attribute hal_$1_server;
expandattribute hal_$1_server false;
``
- 3 hal_attribute_hwservice 也是个宏定义,需要在te_macros 中展开
```clike
# system/sepolicy/public/hal_light.te
# HwBinder IPC from client to server, and callbacks
binder_call(hal_light_client, hal_light_server)
binder_call(hal_light_server, hal_light_client)

hal_attribute_hwservice(hal_light, hal_light_hwservice)

allow hal_light sysfs_leds:lnk_file read;
allow hal_light sysfs_leds:file rw_file_perms;
allow hal_light sysfs_leds:dir r_dir_perms;
  • 4 hal_attribute_hwservice 展开
# system/sepolicy/public/te_macros
###########################################
# hal_attribute_hwservice(attribute, service)
# Ability for domain to get a service to hwservice_manager
# and find it. It also creates a neverallow preventing
# others from adding it.
#
# Used to pair hal_foo_client with hal_foo_hwservice
define(`hal_attribute_hwservice', `
  allow $1_client $2:hwservice_manager find;
  add_hwservice($1_server, $2)

  build_test_only(`
    neverallow { domain -$1_client -$1_server } $2:hwservice_manager find;
  ')
')
增加权限
过滤

常规

dmesg | grep 'avc: '

or

// hal_vendorlight 是根据 type hal_vendorlight, domain;
logcat -b all | grep hal_vendorlight

以宽容模式启动系统,看看在启动时会遇到哪些拒绝事件:
在 Ubuntu 14.04 或更高版本中:

adb shell su -c dmesg | grep denied | audit2allow -p out/target/product/BOARD/root/sepolicy

在 Ubuntu 12.04 中:

adb shell su -c dmesg | grep denied | audit2allow
根据avc提示添加
auditd  : avc:  denied  { add } for interface=android.hidl.base::IBase pid=438 scontext=u:r:hal_vendorlight:s0 tcontext=u:object_r:hidl_base_hwservice:s0 tclass=hwservice_manager permissive=1

以下是此拒绝事件的关键元素:

  • 操作 - 试图进行的操作使用括号突出显示:add 。
  • 操作方 - scontext(来源环境)条目表示操作方;hal_vendorlight。
  • 对象 - tcontext(目标环境)条目表示正在对哪个对象执行操作;hidl_base_hwservice
  • 结果 - tclass(目标类别)条目表示当前操作对象的类型;hwservice_manager
常见问题
auditd  : avc:  denied  { find } for interface=vendor.leo.light::ILightVendor pid=438 scontext=u:r:hal_vendorlight:s0 tcontext=u:object_r:default_android_hwservice:s0 tclass=hwservice_manager permissive=1
auditd  : avc:  denied  { add } for interface=vendor.leo.light::ILightVendor pid=438 scontext=u:r:hal_vendorlight:s0 tcontext=u:object_r:default_android_hwservice:s0 tclass=hwservice_manager permissive=1

注意此处的提示 对default_android_hwservice的hwservice_manager 缺少 add find 权限,切记不可直接allow hal_vendorlight default_android_hwservice:hwservice_manager { add find },。
正确的做法是

  • 1 在hwservice_contexts 声明
vendor.leo.light::ILightVendor                                u:object_r:hal_light_leo_hwservice:s0
  • 2 在hwservice.te 声明为 hwservice_manager_type 的类型
type hal_light_leo_hwservice , hwservice_manager_type;
  • 3 再向 hal_light_leo_hwservice 加权限
allow hal_vendorlight hal_leo_yft_hwservice:hwservice_manager { add find };

参考

Android 中的安全增强型 Linux
Android P添加一个可以让system_server进程访问的hal service需要改动的sepolicy文件
Android O selinux违反Neverallow解决办法
Android : SELinux 简析&修改
Android sepolicy简要记

Selinux 的模式 androidboot.selinux 的值是否需要开启selinux。(可以直接改is_enforcing 的值或者改/proc/cmdline 文件,当然/proc/cmdline 文件每个平台有每个平台的做法)安卓系统启动过程中, init 进程会进行selinux 的初始化。通过读取/proc/cmdline 文件, 判断。1,临时修改,使用setenforce 命令。setenforce 1 //设置为Enforcing强制模式。2,在内核中直接关闭 Selinux。3,在init中关闭。 阅读详情

相关推荐

安卓selinux调试

selinux安卓权限问题

kk_judge的博客 1148

android R的一些selinux配置经验分享

android R的selinux配置

qq_27629673的博客 3220

【ESP32实战】SPI驱动ILI9341屏幕:从基础绘图到汉字显示

本文详细介绍了如何使用ESP32通过SPI驱动ILI9341屏幕,从基础连接、SPI初始化到实现基础绘图、数字显示及汉字显示的全过程。文章包含实用的代码示例和优化技巧,帮助开发者快速掌握屏幕驱动技术,提升显示性能。特别针对常见问题如花屏、刷新率等提供了解决方案。

weixin_29164091的博客 620

新增HIDL service需要修改的sepolicy文件整理

以添加 “android.hardware.lightnew@1.0-service” 为例,替换 lightnew 为自定义名称即可 1. system/sepolicy/public/attributes 2.system/sepolicy/prebuilts/api/29.0/public/attributes +hal_attribute(lightnew); //hal_attribute函数如下: system/sepolicy/prebuilts/api/29.0/pub...

1890

基于Autoware制作高精地图(一)

基于Autoware制作高精地图(一) ​开始进入正题,也是最近在忙的一件事,制作高精地图。 高精地图的制作大概分为以下四个流程(不一定完全正确): 1.构建点云地图; 2.点云地图标注; 3.制作OpenDrive地图; 4.地图存储索引。 这篇文章主要讲解如何构建点云地图。 首先我们要有一段自己录制的激光雷达点云数据,这里推荐大家采用Velodyne16线激光雷达,因为这里我们构建的点云底图是三维的,而采用Velodyne而不是速腾聚创(rslidar)等其他品牌的原因是Autoware里面有一个选项是

weixin_44570248的博客 7796

【安全加固】应对Sweet32攻击:TLS/SSL协议3DES漏洞深度解析与修复指南

本文深度解析了CVE-2016-2183(Sweet32攻击)漏洞,该漏洞利用TLS/SSL协议中3DES加密算法的64位块大小缺陷,通过大量数据流量实施“生日攻击”导致信息泄露。文章提供了从原理分析、系统排查到跨平台修复的完整指南,重点指导如何在Windows、Linux服务器及网络设备中禁用不安全的3DES密码套件,并采用AES-GCM等更安全的加密方式,以彻底修复此TLS/SSL漏洞。

weixin_29230649的博客 585

selinux权限之vendor_executes_system_violators属性

Time:20210829 Question:在Android的kernel中,libxxx库中用system函数调用cmd命令,但是无法执行cmd。 Root cause:查看log,用关键字“avc:”发现对应的selinux权限不足。 验证方法: adb root adb shell # 进入手机 getenforce # 查看对应的权限设置enforcing表示拦截,permission表示允许 setenforce 0 # 设置为permission setenforce 1 # 设置为enfo.

Lizune 2229

1个PID回路如何连接2个执行器(算法和代码)

我们先看下位置型PID的控制框图:2、PID是基于error的控制 所以反馈信号跳动、干扰非常大的话,对PID的闭环控制影响是非常大的,所以对于反馈信号、一定要抗干扰和滤波处理。3、下图是增量型PID的控制框图:4、一个PID输出回路如何连接2个执行器?(有些系统会设置热阀和冷阀才能满足控制要求)。

RXXW_Dor的博客 1810

关闭selinux_Android安全策略Selinux小结

在 Android 4.3版本之前,Android通过DAC(Discretionary Access Control)自主访问控制来进行权限管理。DAC 的核心思想很简单,通俗的来讲就是“谁创造了我,我就拥有谁的权利”。比如, root 用户启动 Camera,那么 Camera 就有 root 用户的权限,在 Linux 系统上能干任何事情。很显然,DAC 管理太过宽松,只要想办法在 Andr...

weixin_39922004的博客 783

C#解析基恩士(KEYENCE)PLC数据:KV协议通信与实时监控实现

KV协议是基恩士PLC使用的一种专用通信协议,通常用于与上位机进行数据交换。KV协议通过RS-232C、RS-485、Ethernet等接口与上位机通信,支持多种数据类型的读写,包括但不限于位、字、双字、浮点数等。简洁易用:KV协议的通信格式简单,易于实现。支持多种数据类型:支持位数据、字数据、定长字符串等。高效实时性:能够提供较高的实时数据交换性能,适合实时监控应用。本文介绍了如何通过C#与基恩士KV系列PLC进行通信,实现数据的解析和实时监控功能。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1806

vue2/3 - H5 移动端网页中调用手机摄像头扫描二维码 / 条形码功能,在h5手机网页里调起相机摄像头进行二维码或条形码扫描效果详细教程(详细示例组件源码,一键复制开箱即用!)

vue扫描二维码条形码,vue网页调用摄像头扫二维码条形码,vue移动端如何实现调用相机扫描二维码,vue移动端扫一扫功能,vue怎么做移动端h5扫一扫功能,vue识别二维码和条形码,vue实现点击按钮调用摄像头扫码,vue调用本地摄像头实现拍照功能,Vue中如何进行二维码生成与扫描,如何实现vue在手机浏览器中调用摄像头实现扫描二维码功能,VUE项目移动端H5调用摄像头扫码,vue项目中实现H5调取摄像头,网页调用摄像头实现二维码扫描功能,vue调用手机摄像头,vue在调用摄像头扫码,vue自定义打开摄像

✅ 精选推荐文章 1万+

安卓 (二) 怎么添加服务并自启动

安卓环境 PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=8.1.0 TARGET_PRODUCT=xxx TARGET_BUILD_VARIANT=userdebug TARGET_BUILD_TYPE=release TARGET_ARCH=arm TARGET_ARCH_VARIANT=armv7-a-neon TARGET_CPU_VARI...

u011011827的博客 1487

手把手教你学PCIE--基本概念:PCIe 初始化流程概述

硬件上电复位:系统上电时,所有 PCIe 设备都会进行复位。链路训练(Link Training):主机和设备之间通过链路训练状态机(LTSSM)协商链路参数(如速度和宽度)。配置空间访问:主机通过配置空间读写来发现和配置设备。资源分配:主机为设备分配内存映射 I/O 区域(BARs)、中断向量等资源。驱动程序加载和高级配置:操作系统加载设备驱动程序,并进行更高级的配置和状态监控。硬件上电复位:确保所有设备处于已知的良好状态。链路训练:主机和设备通过 LTSSM 协商链路速度和宽度。

MHD0815的博客 1373

编译CM10.2(android 4.3) 添加selinux支持小结(草稿)

编译CM10.2时如要支持selinux,则需要对几处地方做一定的修改: 1、 device config里: 2、 ramdisk 3、 内核config 4、 内核源码支持

欢迎回来 168

AI在保险产品定价优化中的创新应用

在当今保险市场中,准确合理的产品定价是保险公司实现可持续发展的关键因素之一。传统的保险产品定价主要基于经验数据和精算模型,但这种方式往往存在数据处理效率低、对复杂风险因素考虑不足等问题。本文的目的在于深入探讨AI技术如何在保险产品定价中进行创新应用,以提高定价的准确性、效率和灵活性,更好地满足市场需求和客户个性化需求。本文的范围涵盖了AI技术在保险产品定价各个环节的应用,包括风险评估、费率计算、产品设计等方面。同时,还会涉及到相关的核心算法、数学模型以及实际应用案例等内容。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 982

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Android 各版本关闭 Selinux 的方法

运行时调试开关 Selinux   Cmd Discription Other adb shell getenforce 查看当前 Selinux 功能是 permissive(关闭)还是 enforce(打开)的 adb shell setenforce 0 开Selinux:设置成模式permissive adb shell setenforce 1 关Selinux:设置成模式enforce 说明:setenforce 修改的状态在设备重启后会失效,需要重新执行命令重

Change The World 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Android中的SELinux

SELinux(Security-Enhanced Linux)即安全增强型Linux,是一个Linux内核的安全模块,其提供了访问控制安全策略机制,包括强制访问控制。SELinux为每个进程与文件都打上一个安全上下文标签,通过该标签实现主体(进程)对客体(资源文件)的访问控制。SELinux是适用于 Linux 操作系统的强制访问控制 (MAC) 系统。作为 MAC 系统,它与 Linux 中用户非常熟悉的自主访问控制 (DAC) 系统不同。

叶辞树的博客 1388

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

安卓9.0添加服务修改SELinux

#文章目录#前言#SELinux来源#SELinux基本框架#SELinux 在不同版本的表现#使用audit2allow工具生成SELinux 权限#完整代码#前言先推荐下之前的SEL...

嵌入式Linux 4594

android selinux 模式 安卓selinux严格模式

该语法含义为:允许具有user_t类型的进程(主体)对具有user_home_t类型的、目标类是file的目标有create read write unlink的权限,或者为:允许domain为user_t的进程(主体)对type为user_home_t的、目标类为file的目标有create read write unlink的权限。然后,这个seinfo标签可以作为seapp_contexts文件中的一个键,为所有带有该seinfo标签的应用程序分配一个特定的标签。还存在其他类型的应用程序。

hnlgzb的专栏 963

Android Selinux介绍,如何添加selinux 权限

文件类: type=1400 audit(0.0:104avc: denied { search } for name="vendor" dev="tmpfs" ino=9241 scontext=u:r:dumpstate:s0 tcontext=u:object_r:mnt_vendor_file:s0 tclass=dir permissive=0 分析: 缺少的权限:{write/read/search} 谁缺少权限:scontext=u:r:dumpstate:s0 哪个文件的权限:t.

yinhunzw的专栏 1万+

安卓SELinux策略语法

本文介绍了安卓SELinux策略中的语法规则,主要包括:1)通用AV规则语法(allow、neverallow等);2)类型声明(type)及其属性关联(typeattribute);3)属性定义(attribute)和类型分组机制;4)别名定义(alias/typealias)及其兼容性作用;5)init_daemon_domain宏的详细解析,该宏用于为init启动的守护进程配置独立SELinux域。文章通过具体示例说明了各类语法规则的使用场景和编写规范,为安卓SELinux策略开发提供了实用参考。

似霰的博客 1876

Android系统SELinux详解

SELinux是一种加强文件安全的一种策略,可以更好地保护我们的Android系统, 比如限制系统服务的访问权限、控制应用对数据和系统日志的访问等措施,这样就降低了恶意软件的影响,并且可以防止因代码存在的缺陷而产生的对系统安全的影响。从系统安全方面考虑,SELinux是保护神,但是从软件开发方面,SELinux就是一道牵绊,这是一把双刃剑。SELinux默认开启,即使获得了该系统的root权限,也只能向相关策略中指定的设备写入数据,从而更好地保护和限制系统服务,保障系统和数据的安全。......

u010345983的博客 4849

Android SeLinux权限问题和解决方法

1. 确认 seLinux导致权限问题 1.1 标志性log 格式: avc: denied  { 操作权限 }  for pid=7201 comm=“进程名”  scontext=u:r:源类型:s0  tcontext=u:r:目标类型:s0  tclass=访问类别  permissive=0 1.2 举例: Kenel log: avc: denied

DonnyCoy 3万+

【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万+

Android临时和永久关闭selinux

当我们想要临时关闭selinux时,如果可以获得root权限,通过adb如下指令可以临时关闭selinux: setenforce 0 如果需要长期关闭,则需要用其他方法,先看slinue启动的位置: Android启selinux从init开始。在init.cpp中有: static void selinux_initialize(bool in_kernel_domain) { Ti...

zhangdaxia2的博客 2万+

【安卓SELinux权限】SELinux走过的坑

SELinux走过的坑 linux通过UID/GID机制对权限进行管理,将文件的权限划分为读、写和执行三种,分别用字母r、w和x表示。每一个文件有三组读、写和执行权限,分别是针对“文件的所有者”、“文件所有者所属的组”以及其它用户。 在linux系统中,我们想完全操作某个文件,只需要执行sudo chmod 777 filename 即可。这表示root用户拥有无限大的权限,可以操作系统中的任何文件。 所以在安卓系统中,引入了SELinux用以提升系统安全性。 一、常用命令 SELinux模式有三种,E

qq_23542165的博客 1916
上一篇: Android Wifi小记 (2)
下一篇: epoll 小记
leoStack
博客等级 码龄11年 16粉丝 16原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值