SELinux 权限问题

权限修改

  • adb在线修改seLinux
    Enforcing(表示已打开),Permissive(表示已关闭)
 getenforce;  //获取当前seLinux状态
 setenforce 1;   //打开seLinux
 setenforce 0;   //关闭seLinux
  • 从kernel中彻底关闭
    修改LINUX/android/kernel/arch/arm64/configs/xxx_defconfig文件(xxx一般为手机产品名), 去掉CONFIG_SECURITY_SELINUX=y 的配置项
  • sepolicy中添加权限
    通过指令cat /proc/kmsg | grep denied,或者kernel的Log中定位到标志性log
    在这里插入图片描述修改步骤
    找相应的源类型.te文件,此文件可能的存放路径 (其中源类型见下方的标志性log格式) :
  LINUX/android/external/sepolicy
  LINUX/android/device/qcom/sepolicy/common

标志性log 格式

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

在相应源类型.te文件,添加如下格式的一行语句:(结尾别忘了分号)

 格式:allow  源类型 目标类型:访问类型 {操作权限};

实例
Kernel Log

avc: denied {getattr read} for pid=7201 comm="xxx.xxx" scontext=u:r:system_app:s0 tcontext=u:r:shell_data_file:s0 tclass=dir permissive=0

修改方案

  在system_app.te文件中,添加下面语句:
  allow system_app shell_data_file:dir{getattr read};

8.1 user版本去掉selinux权限
代码路径:\system\core\init\Android.mk

ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
init_options += \
    -DALLOW_LOCAL_PROP_OVERRIDE=1 \
    -DALLOW_PERMISSIVE_SELINUX=1 \
    -DREBOOT_BOOTLOADER_ON_PANIC=1 \
    -DDUMP_ON_UMOUNT_FAILURE=1 \
    -DVERIFY_BOOT_USERDEBUG=1
else
init_options += \
    -DALLOW_LOCAL_PROP_OVERRIDE=0 \
    -DALLOW_PERMISSIVE_SELINUX=1 \
    -DREBOOT_BOOTLOADER_ON_PANIC=0 \
    -DDUMP_ON_UMOUNT_FAILURE=0 \
    -DVERIFY_BOOT_USERDEBUG=0
endif

备注:其中该属性DALLOW_PERMISSIVE_SELINUX=1 设置为1表示关闭
本文来自:http://gityuan.com/2015/06/13/SEAndroid-permission/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值