在Android selinux中转义冒号字符

时间:2016-04-28 22:54:41

标签: android linux android-source selinux

我尝试为我的AOSP构建创建自定义selinux策略,其中不受信任的应用可以写入/sys/class/leds/led:flash_torch/brightness,从而控制手电筒。

为此,我在external/sepolicy

中编辑了以下文件

domain.te

allow domain sys_flashlight:file rw_file_perms;

file.te

type sys_flashlight, fs_type;

untrusted_app.te

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策略时转义:字符?

修改:我已经尝试引用路径并使用\尝试逃避:但没有运气

1 个答案:

答案 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); }

因此:在集合中无效。

这似乎是一个字符集不包含这些错误的错误。