运行SE Linux的android lollipop中的insmod

时间:2014-11-24 11:02:54

标签: android linux-kernel android-5.0-lollipop selinux insmod

我正在尝试用几个模块参数执行insmod abc.ko, 但是,这些模块参数需要动态计算。所以我启动了app / system / bin / my_app来计算这些参数,然后在my_app中执行insmod。

问题: 当使用init.hammerhead.rc脚本在启动时启动my_app时,它无法执行insmod并发出以下错误

type=1400 audit(0.0.4): avc: denided {sys_module} for path="system/bin/my_app" dev="mmcblk0p25" ino=170 scontext=u:r:init:s0 tcontext=u:r:init.s0 tclass=file

如何让my_app能够进行insmod?

非常感谢任何解决此问题的指示

2 个答案:

答案 0 :(得分:2)

insmod模块的能力与运行do_insmod()的代码的权限相关联。在您的情况下,问题是没有描述允许您的sw访问模块的策略。 我不是sepolicy的专家,但是有一个原因可以从日志中生成相应的策略文件:这是一篇很好的文章:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/SELinux_Users_and_Administrators_Guide/Security-Enhanced_Linux-The-sepolicy-Suite-sepolicy_generate.html

希望有所帮助。 Aymen。

答案 1 :(得分:2)

终于找到了解决方案。 my_app应该被赋予新的策略,允许它执行insmod。

[1]在///sepolicy/my_app.te中创建my_app.te [2]将以下策略添加到my_app.te。

type my_app, domain;
type my_app_exec, exec_type, file_type;

allow my_app self:capability sys_module;
allow my_app self:capability { setuid setgid };
allow my_app self:capability sys_admin;
allow my_app shell_exec:file rx_file_perms;;
init_daemon_domain(my_app)

permissive_or_unconfined(my_app)

[3]将my_app.te添加到BoardConfig.mk文件中的BOARD_SEPOLICY_UNION。 [4]将以下内容添加到sepolicy / file_contexts

/ system / bin / my_app u:object_r:my_app_exec:s0

更多信息或问题:订阅seandroid-list-join@tycho.nsa.gov