2

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

问题:当 my_app 在启动时使用 init.hammerhead.rc 脚本启动时,它无法执行 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 ?

将不胜感激任何指针来解决这个问题

4

2 回答 2

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

希望有帮助。艾门。

于 2014-11-24T21:24:17.673 回答
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

于 2014-11-25T11:57:19.050 回答