我尝试为我的AOSP构建创建自定义selinux策略,其中不受信任的应用可以写入/sys/class/leds/led:flash_torch/brightness
,从而控制手电筒。
为此,我在external/sepolicy
allow domain sys_flashlight:file rw_file_perms;
type sys_flashlight, fs_type;
allow untrusted_app sys_flashlight:file rw_file_perms;
现在,拼图的最后一部分是文件genfs_contexts
。
理想情况下,我希望将此文件更改为包含以下内容:
genfscon proc /sys/class/leds/led:flash_torch/brightness u:object_r:sys_flashlight:s0
首先,请记住以上陈述是错误的。 genfscon proc
仅适用于procfs
。忽略这一点,由于文件路径包含:
字符,因此构建过程会通过声明:
external/sepolicy/genfs_contexts:11:ERROR 'syntax error' at token ':' on line 12972:
genfscon proc /sys/class/leds/led:flash_torch/brightness u:object_r:sysfs_flashlight:s0
genfscon proc /foreground u:object_r:proc_foreground:s0
checkpolicy: error(s) encountered while parsing configuration
make: *** [out/target/product/hammerhead/obj/ETC/sepolicy_intermediates/sepolicy] Error 1
make: *** Waiting for unfinished jobs....
如何在编写selinux策略时转义:
字符?
修改:我已经尝试引用路径并使用\
尝试逃避:
但没有运气
答案 0 :(得分:0)
查看checkpolicy的解析器语句:
policy_parse.y:139:%token GENFSCON
policy_parse.y:750:genfs_context_def : GENFSCON filesystem path '-' identifier security_context_def
policy_parse.y:752: | GENFSCON filesystem path '-' '-' {insert_id("-", 0);} security_context_def
policy_parse.y:754: | GENFSCON filesystem path
我们看到GENFSCON的路径令牌正在扩展,定义为:
policy_scan.l:252:"/"({alnum}|[_\.\-/])* { return(PATH); }
因此:在集合中无效。
这似乎是一个字符集不包含这些错误的错误。