参考文章:
https://www.cnblogs.com/zhongguiyao/p/13955398.html
常用的定义,方便使用 一组权限或一类对象
源码位置:/system/sepolicy/public/global_macros
比如下面这些:
#####################################
# Common groupings of permissions.
#
define(`x_file_perms', `{ getattr execute execute_no_trans map }')
define(`r_file_perms', `{ getattr open read ioctl lock map watch watch_reads }')
define(`w_file_perms', `{ open append write lock map }')
define(`rx_file_perms', `{ r_file_perms x_file_perms }')
define(`ra_file_perms', `{ r_file_perms append }')
define(`rw_file_perms', `{ r_file_perms w_file_perms }')
define(`rwx_file_perms', `{ rw_file_perms x_file_perms }')
define(`create_file_perms', `{ create rename setattr unlink rw_file_perms }')
原生的一些SElinux sepolicy
源码位置:/system/sepolicy/private/ or /system/sepolicy/public/
比如
init.te
vendor_init.te
vendor_shell.te
一些neverallow的规则常常定义在domain.te
源码位置:/system/sepolicy/public/domain.te
文件的安全上下文
原生的定义
/system/sepolicy/public/file.te
vendor厂商自己的定义
比如可能是
/device/generic/goldfish/sepolicy/common/file.te
或者其它 te档案中,如
/system/sepolicy/public/surfaceflinger.te
通常会在file_contexts文件中指定进程或档案的selinux安全上下文
比如:
[ /system/sepolicy/private/file_contexts]
// 文件
/data/vendor(/.*)? u:object_r:vendor_data_file:s0
/data/vendor_ce(/.*)? u:object_r:vendor_data_file:s0
/data/vendor_de(/.*)? u:object_r:vendor_data_file:s0
// 进程
/system/bin/surfaceflinger u:object_r:surfaceflinger_exec:s0
可以通过 ls -Z 或 ps -Z 命令查看(是不是和上面定义的一致)
// 查看进程
console:/ # ps -AZ | grep SurfaceFLinger
1|console:/ # ps -AZ | grep surfaceflinger
u:r:surfaceflinger:s0 system 188 1 134632 34488 SyS_epoll_wait 0 S surfaceflinger
// 查看档案
console:/ # ls -Z /data | grep vendor
u:object_r:vendor_data_file:s0 vendor
u:object_r:vendor_data_file:s0 vendor_ce
u:object_r:vendor_data_file:s0 vendor_de
查看赋予某一个对象的权限sepolicy
cat /vendor/etc/selinux/vendor_sepolicy.cil | grep "allow xxxx_service"
标签:sepolicy,te,vendor,perms,SELinux,file,随笔,data From: https://www.cnblogs.com/roger-yu/p/16902230.html