SELinux权限

SELinux是Linux内核的强制访问控制系统,提供enforcing、permissive和disable三种运行级别。政策语言包括规则名称、类型集等元素,用于定义访问权限。文章介绍了如何通过adb查看权限、修改内核配置或在sepolicy中添加权限来管理SELinux策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SELinux权限

SELinux简介

SELinux是2.6版本Linux内核中提供的强制访问控制系统,selinux默认配置在/etc/sysconfig/selinux。

默认有三种级别

  • enforcing Linux下 selinux所设置的安全策略都会被启用.所有与selinux安全策略有关的服务或者程序都会被策略阻止.也就是,所有操作都会进行权限检查。
  • permissive Linux下 selinux所设置的安全策略都会被启动,但是所有与selinux安全策略有关的服务或者程序不会被策略阻止,但是会收到警告.也就是,所有操作都被允许(即没有 MAC),但是如果有违反权限的话,会记录日志
  • disable 关闭 selinux,相当于系统没有安装 selinux一样
SELinux Policy语言介绍
  • 规则定义语法:

    规则名称 类型集 类型集:类别集 许可集;每个规则都要包含下面五个元素:

    • 规则名称: allow,dontaudit,auditallow和neverallow

    • 源类型:授予访问的类型,通常是进程的域类型

    • 目标类型:客体的类型,它被授权可以访问的类型

    • 客体类别:客体的类可

    • 许可:表示主体对客体访问时允许的操作类型(也叫做访问向量)。

    例如:allow kernel block_device:blk_file write;

其中allow是规则名称,kernel是主体类型,block_device是客体类型,blk_file是客体类别,write是许可类型。

权限修改
  1. adb查看SELinux权限

    getenforce //获取当前seLinux状态

    setenforce 1 //打开seLinux

    setenforce 0 //关闭seLinux

    ls -Z #可以查看当前SELinux权限

  2. 从内核中关闭SELinux权限

    通过修改kernel/arch/arm64/configs/xxx_defconfig文件,关闭CONFIG_SECURITY_SELINUX=y配置项即可

    or

    system/core/init/init.c中 将函数security_setenforce(is_enforcing);里的参数is_enforcing强制赋值为0,然后重新编译kernel,烧录boot.img即可在系统启动阶段就关闭安全策略。

  3. 在sepolicy中添加权限

    • debug和修改依据,定为系统需要的权限 adb logcat | denied or adb shell logcat -v threadtime > e:\logcat3.txt确定权限

    • 修改步骤

      • 找到源类型.te 文件,
      external/sepolicy
      device/qcom/sepolicy/common
      • 标志性日志格式

      avc: denied { 操作权限 } for pid=7201 comm=“进程名” scontext=u:r:源类型:s0 tcontext=u:r:目标类型:s0 tclass=访问类型 permissive=0

      • 修改方案
      
      #在相应te文件或system_app.te文件中,添加下面语句:
      
       allow system_app shell_data_file:dir{getattr read};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值