Selinux type 编写示例

以下是从aosp 中,分析如何定义的type 和allow 规则
1.定义type (domain)
hal_light 这个type的定义

type hal_light_default, domain;
hal_server_domain(hal_light_default, hal_light)

aosp/system/sepolicy/vendor/qcom/common/hal_light_default.te

define(`hal_server_domain', `
typeattribute $1 halserverdomain;
typeattribute $1 $2_server;
typeattribute $1 $2;
')

2.定义 Object type 

aosp/device/google/crosshatch-sepolicy/vendor/qcom/common/file.te
type sysfs_graphics, sysfs_type, fs_type;
type sysfs_lights, sysfs_type, fs_type;
                   (attribute   )


                   
3.Labeing Object

aosp/system/sepolicy/vendor

genfscon sysfs /devices/platform/soc/894000.i2c/i2c-3/3-0043/leds                u:object_r:sysfs_leds:s0
genfscon sysfs /devices/platform/soc/894000.i2c/i2c-3/3-005a/leds                u:object_r:sysfs_leds:s0
genfs_contexts:51:genfscon sysfs /devices/platform/soc/soc:qcom,dsi-display@51/backlight/panel0-backlight/vr_mode   u:object_r:sysfs_lights:s0

4.Labeing Subject

aosp/system/sepolicy/vendor

file_contexts:/(vendor|system/vendor)/bin/hw/android\.hardware\.light@2\.0-service          u:object_r:hal_light_default_exec:s0
file_contexts:/(vendor|system/vendor)/bin/hw/android\.hardware\.light@2\.0-service-lazy     u:object_r:hal_light_default_exec:s0
hal_light_default.te:type hal_light_default, domain;
hal_light_default.te:hal_server_domain(hal_light_default, hal_light)
hal_light_default.te:type hal_light_default_exec, exec_type, vendor_file_type, file_type;
hal_light_default.te:init_daemon_domain(hal_light_default)

5.allow 语句
device/google/crosshatch-sepolicy/vendor/qcom/common/hal_light.te

allow 语句:
 

allow hal_light sysfs_graphics:dir search;
allow hal_light sysfs_graphics:file rw_file_perms;
allow hal_light sysfs_lights:dir search;
allow hal_light sysfs_lights:file rw_file_perms;

 

SELinux是一种安全强制访问控制(MAC)系统,它通过规则来控制进程的访问权限。在SELinux中,规则由策略文件定义,这些策略文件包含了一条条规则,用于限制进程能够访问的资源。 规则编写的一般步骤如下: 1.确定需要保护的资源和进程:在编写规则之前,需要确定需要保护的资源和进程。这些资源可以是文件、目录、网络端口等,进程可以是系统服务、用户应用程序等。 2.查看SELinux日志:在确定需要保护的资源和进程后,需要查看SELinux日志以了解进程的访问行为和被拒绝的请求。这些日志可以帮助确定需要编写的规则类型和参数。 3.选择规则类型和参数:根据需要保护的资源和进程以及日志信息,选择合适的规则类型和参数。 4.编写规则:根据选择的规则类型和参数,编写规则并添加到策略文件中。 5.测试规则:添加规则后,需要测试规则是否生效,可以使用audit2allow命令来检查规则是否生效。 6.优化规则:如果规则不生效或存在安全漏洞,需要对规则进行优化和调整,以达到更好的保护效果。 常用的SELinux规则类型包括: 1.文件上下文规则:用于确定进程对文件的访问权限。 2.进程上下文规则:用于确定进程的安全上下文,包括进程能够访问的文件、网络端口等。 3.网络规则:用于限制进程的网络访问权限,包括限制进程能够连接的IP地址、端口等。 4.安全上下文传递规则:用于传递安全上下文,以便进程能够访问受保护的资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值