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是许可类型。
权限修改
adb查看SELinux权限
getenforce //获取当前seLinux状态setenforce 1 //打开seLinuxsetenforce 0 //关闭seLinuxls -Z #可以查看当前SELinux权限从内核中关闭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即可在系统启动阶段就关闭安全策略。在sepolicy中添加权限
debug和修改依据,定为系统需要的权限
adb logcat | deniedoradb 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};

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

925

被折叠的 条评论
为什么被折叠?



