Selinux 权限问题

SELinux 权限添加 通过adb shell getenforce 可以获取SELinux的工作模式,Enforcing表示打开,Permissive表示关闭。 当有权限未被允许时,kernel log 会提示,比如我遇到的是: type=1400 audit(1590114336.309:8): avc: denied { search } for pid=1582 comm="ip" name="net" dev="mmcblk1p16" ino=16 scontext=u:r:sysCfg:s0 tcontext=u:ob 阅读详情

为了确定是否因为SELinux导致的问题,可先执行:

setenforce 0 (临时禁用掉SELinux)

getenforce  (得到结果为Permissive)

如果问题消失了,基本可以确认是SELinux造成的权限问题,需要通过正规的方式来解决权限问题。

 

android KK 4.4 版本后,Google 默认启用了SELinux, 并会把SELinux 审查异常打印在kernel log 或者 android log(L 版本)中,对应的关键字是: “avc: denied” 或者”avc: denied”

案例1

audit(0.0:67): avc: denied { write } for path="/dev/block/vold/93:96" dev="tmpfs" ino=/1263 scontext=u:r:kernel:s0 tcontext=u:object_r:block_device:s0 tclass=blk_file permissive=0

分析过程:

缺少什么权限:      { write }权限,

谁缺少权限:        scontext=u:r:kernel:s0

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

什么类型的文件:    tclass=blk_file

完整的意思: kernel进程对block_device类型的blk_file缺少write权限。

 

解决方法:找到kernel.te这个文件,加入以下内容:

allow  kernel  block_device:blk_file  write;

make install clean后重新编译,刷boot.img才会生效。

 

案例2

audit(0.0:53): avc: denied { execute } for  path="/data/data/com.mofing/qt-reserved-files/plugins/platforms/libgnustl_shared.so" dev="nandl" ino=115502 scontext=u:r:platform_app:s0 tcontext=u:object_r:app_data_file:s0 tclass=file permissive=0

分析过程:

缺少什么权限:      { execute}权限,

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

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

什么类型的文件:    tclass= file

完整的意思: platform_app进程对app_data_file类型的file缺少execute权限。

 

解决方法:找到platform_app.te这个文件,加入以下内容:

allow  platform_app  app_data_file:file  execute;

make install clean后重新编译,刷boot.img才会生效。

 

案例3

audit(1444651438.800:8): avc: denied { search } for pid=158 comm="setmacaddr" name="/" dev="nandi" ino=1 scontext=u:r:engsetmacaddr:s0 tcontext=u:object_r:vfat:s0 tclass=dir permissive=0

解决方法 :engsetmacaddr.te

allow  engsetmacaddr  vfat:dir  { search write add_name create }; 或者

allow  engsetmacaddr   vfat:dir  create_dir_perms;

(create_dir_perms包含search write add_name create可参考external/sepolicy/global_macros的定义声明)

 

案例4

audit(1441759284.810:5): avc: denied { read } for pid=1494 comm="sdcard" name="0" dev="nandk" ino=245281 scontext=u:r:sdcardd:s0 tcontext=u:object_r:system_data_file:s0 tclass=dir permissive=0

解决方法 :sdcardd.te 

allow  sdcardd  system_data_file:dir  read;  或者
allow  sdcardd  system_data_file:dir  rw_dir_perms;

 (rw_dir_perms包含read write,可参考external/sepolicy/global_macros的定义声明)

  

要加入的权限很多时,可以用中括号,比如:
allow engsetmacaddr  vfat:dir { search write add_name create};

 

解决过的问题:

 

报错:

avc:  denied  { set } for property=sys.powerctl scontext=u:r:init_shell:s0 tcontext=u:object_r:powerctl_prop:s0 tclass=property_service

 

解决办法:

在sepolicy路径下init_shell.te中添加权限设置

 

6. 高级进阶

6.1. 新建.te安全策略文件方法

以上基本是对已经存在的进程增加权限,但对第三方进程改如何新增一个全新的te文件并赋予权限呢?

以写mac地址的setmacaddr执行文件为例(这个执行档android原生不存在,自行添加的):

在init.xxx.rc中如下服务:

service engsetmacaddr  /system/bin/setmacaddr  /data/misc/wifi/wifimac.txt

    class main

    disabled

oneshot

 

 

1. 在device/softwinner/astar-common/sepolicy/file_contexts中,参考其他进程声明一个scontext:

……

/system/bin/install-recovery.sh u:object_r:install_recovery_exec:s0

/system/bin/dex2oat     u:object_r:dex2oat_exec:s0

/system/bin/patchoat    u:object_r:dex2oat_exec:s0

/system/bin/setmacaddr u:object_r:engsetmacaddr_exec:s0

指定setmacaddr的路径,并指定一个名字,一定要以service名+_exec结尾

 

2.参考其.te文件在device/softwinner/astar-common/sepolicy/file_contexts 创建engsetmacaddr.te文件,内容如下:

type engsetmacaddr, domain;

type engsetmacaddr_exec, exec_type, file_type;

init_daemon_domain(engsetmacaddr)


allow engsetmacaddr  vfat:dir { search write add_name create};
allow engsetmacaddr  vfat:file { create read write open };
allow engsetmacaddr  engsetmacaddr:capability dac_override;
allow engsetmacaddr  shell_exec:file { execute read open execute_no_trans};
allow engsetmacaddr  system_data_file:dir { write add_name remove_name };
allow engsetmacaddr  system_data_file:file { create execute_no_trans write open setattr};

allow engsetmacaddr  system_file:file { execute_no_trans};

以上赋予的权限全部是根据avc denied的log缺什么一步一步补什么来的。

 

6.2. 新设备节点增加访问权限

驱动创建了一个新的设备节点,即使权限是777,android层也是没有访问权限的。

下面以一个/dev/wifi_bt节点为示范,让此节点被用户空间的system_server进程访问。

1. 编辑devicesoftwinner/astar-common/sepolicy/device.te,仿照这个文件里的写法,定义一个dev_type类型的wifi_bt_device设备:

type misc_block_device, dev_type;

type private_block_device, dev_type;

……

type wf_bt_device, dev_type;  

 

2. 编辑file_contexts.te,将/dev/wf_bt节点声明为第1步定义的wf_bt_device:

/dev/block/by-name/misc         u:object_r:misc_block_device:s0

/dev/block/by-name/alog         u:object_r:log_block_device:s0

/dev/block/by-name/private      u:object_r:private_block_device:s0

# We add here  

/dev/wf_bt              u:object_r:wf_bt_device:s0  

 

3. 在system_server.te,根据dmesg | grep avc允许system_server对wf_bt_device这个节点可读可写:

# Read/Write to /proc/net/xt_qtaguid/ctrl and and /dev/xt_qtaguid.  

allow system_server qtaguid_proc:file rw_file_perms;  

allow system_server qtaguid_device:chr_file rw_file_perms;  

 ……

allow system_server wf_bt_device:chr_file rw_file_perms;  

其他进程如需访问/dev/wf_bt节点,依样画葫芦,增加对wf_bt_device的权限即可。

Linux系统:selinux规则配置详解 SELinux(Security-Enhanced Linux)是一个Linux内核模块,它实现了强制访问控制(MAC)机制,可以对系统中的各种资源(文件、进程、网络端口等)进行细粒度的访问控制,从而提高了系统的安全性主要作用是强化系统的安全性,通过访问控制来防止恶意程序对系统进行攻击。它可以限制程序的权限,防止它们对系统资源进行未经授权的访问和操作,从而有效地保护系统免受攻击。 阅读详情

相关推荐

Selinux权限问题处理指导文档分享

Selinux权限问题处理指导文档 概述 SELinux概述 Selinux即Security-Enhanced Linux,由美国国家安全局(NSA)发起,Secure Computing Corporation (SCC) 和 MITRE直接参与开发,以及很多研究机构(如犹他大学)一起参与的强制性安全审查机制,该系统最初是作为一款通用访问软件,发布于2000年12月(代码采用 GPL 许可发布)。并在Linux Kernel 2.6 版本后,有直接整合进入SELinux, 搭建在Linux Sec

吉吉的博客 1526

setenforce 0 用途

今天被问到 总是输入 setenforce 0 是不是自己都不知道是什么意思,回来恶补了下。

u014717398的博客 3万+

Android SELinux 权限问题处理

前言 ​ SELinux 是 Google 从android 5.0 开始,强制引入的一种非常严格的管理机制,主要用于增强系统的安全性。SELinux有以下两种模式: enforcing mode: 限制访问 permissive mode: 只审查权限,不限制 1 确定 SELinux 问题 ​ 在调试过程中遇到权限问题时,可以通过如下方法,确定是不是由于 SELinux 导致的问题: 方法一: 通过串口或者adb使用如下命令,先将 selinux权限切换到审查模式: setenforce 0 (

it_rensheng的博客 3963

Linux setenforce命令详解[SeLinux操作]

SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。

Chocolate的博客 3589

Android Selinux权限问题

1.1:log提示: type=1400 audit(1262304982.420:57113): avc: denied { sys_ptrace } for pid=1 comm=“init” capability=19 scontext=u:r:init:s0 tcontext=u:r:init:s0 tclass=capability permissive=0 1.2:log格式: avc: denied { 操作权限 } for pid=1 comm=“进程名” scontext=u:r:源

qq_40721728的博客 2622

【Android】关于selinux等引起的权限问题

本文章会持续更新问题背景1:在系统中间增加一个parameter分区,主要用来存储音频参数等硬件参数。但是在audioserver进程访问的时候出现权限问题 相关信息:Android N+MTK 如何创建分区打包成镜像放到手机? 在build/core/Makefile中间的修改如下: ## Generate an ext4 image TARGET_PARAMETER_OUT := $(PR

Joymine的专栏 2599

【CentOS7】selinux介绍及案例详解

setenforce是Linux的selinux防火墙配置命令 〇、简介: SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。 我们在命

野生Java小菜鸟的博客 3722

保姆级教程:在Rockchip RK3588 SDK中,如何为你的新硬件板子创建第一个DTS文件

本文提供在Rockchip RK3588 SDK中为自定义硬件创建首个DTS文件的详细教程。通过分析DTS在RK3588开发中的角色、快速定位参考设计、实操步骤及调试验证方法,帮助开发者高效完成硬件板级配置,特别适合嵌入式Linux系统开发者参考。

weixin_28678831的博客 287

添加Selinux 权限/常见的Selinux 权限问题

1. 概述 SELinux是Google从android 5.0开始,强制引入的一套非常严格的权限管理机制,主要用于增强系统的安全性。 然而,在开发中,我们经常会遇到由于SELinux造成的各种权限不足,即使拥有“万能的root权限”,也不能获取全部的权限。本文旨在结合具体案例,讲解如何根据log来快速解决90%的SELinux权限问题。 2. 调试确认SELinux问题 为了澄清是否因为SELinux导致的问题,临时禁用selinux ,重启失效,可先执行: C:\Users\A

一只攻城的柿子 1万+

FastApi教程

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web )服务器与本地浏览器之间传输超文本的传送协议。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

小石潭记丶 1562

八股文(Unity篇)

在Unity中,协程是通过迭代器实现的,即将协程函数的返回值类型定义为IEnumerator,然后使用yield语句暂停协程的执行,并在需要恢复执行时通过MoveNext()方法继续执行。Unity中的协程是一种能够在主函数中暂停和恢复执行的功能,它使用了C#的迭代器。Resources方式:Resources方式:使用Resources.Load方法加载Resources文件夹下的资源,这种方式的好处是简单易用,无需手动打包资源,但是会导致应用包变得较大,加载速度较慢,不适合较大的资源文件。

m0_50816320的博客 1万+

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

告别Link180!在Ansys Mechanical 2020R2中正确启用Cable280绳索单元(附Beta选项开启指南)

本文详细介绍了在Ansys Mechanical 2020R2中启用Cable280绳索单元的全过程,包括Beta选项的开启步骤、建模技巧及高阶应用。Cable280作为专为绳索仿真设计的单元,相比传统的Link180单元,在大变形模拟和计算效率上表现更优,特别适合斜拉桥、电梯牵引绳等工程场景。

weixin_33711647的博客 405

SELinux权限问题解决

SELinux是Google从android 5.0开始,强制引入的一套非常严格的权限管理机制,主要用于增强系统的安全性。借助 SELinux,Android 可以更好地保护和限制系统服务、控制对应用数据和系统日志的访问、降低恶意软件的影响,并保护用户免遭移动设备上的代码可能存在的缺陷的影响。然而,在开发中,我们经常会遇到由于SELinux造成的各种权限不足,即使拥有“万能的root权限”,也不能获取全部的权限。如果问题消失了,基本可以确认是SELinux造成的权限问题,需要通过正规的方式来解决权限问题。

aylr2015的博客 1410

audio语音相关的基础知识-VAD,ASR,AEC,AGC,BF等

有音素之间的间隙,也有静音和语音本身的间隙,为了对数据从时间上进行相对的校准,语音端点检测技术就应运而生了,因此端点检测技术可以决定这种校准的相对精度,使得同一内容的特征更趋于相同,当然,一般情况下是不可能完全相同的。盲源分离的目的是求得源信号的最佳估计,盲辨识的目的是求得传输通道的。这个技术的主要任务是从带有噪声的语音中准确的定位出语音的开始和结束点,因为语音中含有很长的静音,也就是把静音和实际语音分离开来,因为是语音数据的原始处理,所以VAD是语音信号处理过程的关键技术之一。呈现出与会者清晰的声音。

u013250861的博客 1035

基于matlab的形态学的权重自适应图像去噪

数学形态学以图像的形态特征为研究对象,通过设计一套独特的数字图像处理方法和理论来描述图像的基本特征和结构,通过引入集合的概念来描述图像中元素与元素、部分与部分的关系运算。因此,数学形态学的运算由基础的集合运算(并、交、补等)来定义,并且所有的图像矩阵都能被方便地转换为集合。随着集合理论研究的不断深入和实际应用的拓展,图像形态学处理也在图像分析、模式识别等领域起着重要的应用。实验结果表明,如果仅通过串联滤波器去噪,则往往具有一定的局限性,在结果图像中也保留着较为明显的噪声。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 757

确认 seLinux导致权限问题 对selinux权限的添加

确认 seLinux导致权限问题 对selinux权限的添加 对于selinux的问题,首先如何确认是selinux权限问题呢, 可以查看手机的log如果在log里面显示有如下内容: avc: denied { execheap } for pid=7201 comm=“com.baidu.input” scontext=u:r:untrusted_app:s0 tcontext=u:r:un...

qq_36950017的博客 998

open3d将某一时间序列下的彩色图和深度图批量转换成点云(python)

必备条件需要3D相机生成的彩色图及深度图,注意要将深度图与彩色图对齐(一般3D相机自带对齐算子),以及3D相机的彩色图内参(相机自带内参获取功能)。有了此彩色图、对齐后的深度图以及相机内参就能使用open3d生成彩色点云了.

吾名招财的博客 315

解决Android SeLinux权限问题

解决Android SeLinux权限问题1. 确认 seLinux导致权限问题1.1 标志性log 格式:1.2 举例:1.3 方法1:adb在线修改1.4 方法2: 从kernel中彻底关闭 (用于开机初始化时的seLinux权限问题,要重编bootimage)2. 在sepolicy中添加相应权限2.1 修改依据:2.2 修改步骤:2.3 按如下格式在该文件中添加:2.4 举例3. 添加权限后的neverallowed冲突3.1 编译报错:3.2 原因:3.3 解决方法:3.4 举例 转自:https

qq_40896477的博客 1449

数据仓库从明细到汇总:DWD与DWS层建模实战指南

DWS层的“主题”是指业务分析的核心场景,通常分为“用户主题、商品主题、订单主题、营销主题”等。主题的定义需紧密结合业务需求,避免“为了汇总而汇总”。例如,电商平台的核心业务需求包括“用户活跃度分析”“商品销售情况分析”“订单转化分析”,对应的DWS层主题即可定义为“用户主题汇总表”“商品主题汇总表”“订单主题汇总表”。主题定义时需注意“粒度适中”——汇总粒度既不能过细(否则与DWD层重复,失去汇总意义),也不能过粗(否则无法满足细分分析需求)。

2401_83088008的博客 645

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

当Linux开启SeLinux后的常见权限问题

一、首先说一下,如何临时关闭和打开Selinux以及查看Selinux的状态 1、查看Selinux的状态 # /usr/sbin/sestatus -v  如果看到 SELinux status: enable 即为开启状态 当然也可以使用 #getenforce  命令查看 2、临时关闭 setenforce 0  3、临时开启 setenforce 1 如果要彻底关闭SeL

Robert's blog 8440

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android SELinux 权限问题及解决方法

selinux 解决方法。

yishan34的博客 920

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: Android.mk详解
下一篇: wifi调试adb方法
~我爱中国~
博客等级 码龄16年 28粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值