Android 添加 SELinux权限

Android 添加 SELinux权限

SE Linux:

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

的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux默认安装在 Fedora 和 Red

Hat Enterprise Linux上,也可以作为其他发行版上容易安装的包得到。

SELinux是 2.6 版本的 Linux内核中提供的强制访问控制(MAC)系统。对于目前可用的 Linux安全模块来说,SELinux是功能最全面,而且测试最充分

的,它是在 20 年的 MAC研究基础上建立的。SELinux在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制

概念。

SELinux是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安

全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信

息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他。SELinux提供了比传统的UNⅨ权限更好的访问控制。

SELinux 三种模式:

Enforcing 强制— SELinux 策略强制执行,基于 SELinux 策略规则授予或拒绝主体对目标的访问

Permissive 宽容— SELinux 策略不强制执行,不实际拒绝访问,但会有拒绝信息写入日志

Disabled 禁用— 完全禁用SELinux

Android 如何关闭SELinux:

adb root

adb shell setenforce 0 //关闭SELinux

adb shell setenforce 1 //打开SELinux

如何查看是否是SELinux引起的问题:

adb logcat | grep -i avc
在log中查看:
09-06 07:12:52.891  2792  2792 W ls      : type=1400 audit(0.0:13152): avc: denied { getattr } for path="/init" dev="dm-0" ino=25 scontext=u:r:shell:s0 tcontext=u:object_r:init_exec:s0 tclass=lnk_file permissive=0
09-06 07:12:52.895  2792  2792 W ls      : type=1400 audit(0.0:13153): avc: denied { getattr } for path="/init.environ.rc" dev="dm-0" ino=26 scontext=u:r:shell:s0 tcontext=u:object_r:rootfs:s0 tclass=file permissive=0
09-06 07:12:56.818  2793  2793 W ls      : type=1400 audit(0.0:13154): avc: denied { getattr } for path="/linkerconfig" dev="tmpfs" ino=3170 scontext=u:r:shell:s0 tcontext=u:object_r:linkerconfig_file:s0 tclass=dir permissive=0
09-06 07:12:56.818  2793  2793 W ls      : type=1400 audit(0.0:13155): avc: denied { getattr } for name="bootstrap" dev="tmpfs" ino=3170 scontext=u:r:shell:s0 tcontext=u:object_r:linkerconfig_file:s0 tclass=dir permissive=0
09-06 07:12:56.818  2793  2793 W ls      : type=1400 audit(0.0:13156): avc: denied { getattr } for path="/data_mirror" dev="tmpfs" ino=1595 scontext=u:r:shell:s0 tcontext=u:object_r:mirror_data_file:s0 tclass=dir permissive=0
09-06 07:12:56.818  2793  2793 W ls      : type=1400 audit(0.0:13157): avc: denied { getattr } for name="/" dev="tmpfs" ino=1595 scontext=u:r:shell:s0 tcontext=u:object_r:mirror_data_file:s0 tclass=dir permissive=0
09-06 07:12:56.818  2793  2793 W ls      : type=1400 audit(0.0:13158): avc: denied { getattr } for path="/init" dev="dm-0" ino=25 scontext=u:r:shell:s0 tcontext=u:object_r:init_exec:s0 tclass=lnk_file permissive=0

添加节点以及分配权限:

1.file.te 定义路径:
# add by mazhuang for Factory mode LCD test LED light is not on 2021-03-26
/sys/class/leds/red/brightness        u:object_r:led_data_file:s0
/sys/class/leds/scan_red/brightness   u:object_r:led_data_file:s0
/sys/class/leds/green/brightness      u:object_r:led_data_file:s0
/sys/class/leds/scan_blue/brightness  u:object_r:led_data_file:s0
2.file.te 定义type:
# add by mazhuang for Factory mode LCD test LED light is not on 2021-03-26
type led_data_file, fs_type, sysfs_type;
3.system_app.te 重新封装:
# add by mazhuang for Factory mode LCD test LED light is not on 2021-03-26
allow system_app led_data_file:file {open write getattr};
#{ }中放入所需要的权限

注:在生成安全策略文件时进行检查,判断是否有违反neverallow语句。在编译过程中,发现neverallow中有注明不能allow的权限,而你又allow了一条,就会编译失败。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WLHG8PLUS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值