linux - 在内核 5.x 中编写简单的 lsm
问题描述
我正在尝试编写一个什么也不做的简单 lsm 模块。但我有几个问题。
static int rdwn_task_kill(
struct task_struct* p,
struct siginfo *info,
int sig,
u32 secid
) {
return 0;
}
static struct security_hook_list rdwn_hooks[] = {
LSM_HOOK_INIT(task_kill, rdwn_task_kill)
};
static __init rdwn_init(void) {
security_add_hooks(rdwn_hooks, ARRAY_SIZE(rdwn_hooks), "rdwn");
printk(KERN_INFO "RDWN: Initializing.\n");
return 0;
}
// How to load module??
如您所知,在以前的内核版本中,编写和加载 lsm 更加简单。但是现在,我对此感到非常困惑。以前,有一些功能,如security_initcall
. 但是现在呢???如何在内核 5 及更高版本中加载 lsm?我查看了其他 lsm 代码,例如 selinux 和 apparmor,它们被用于DEFINE_LSM
定义结构的宏,仅此而已(实际上我再也看不到了)。够了吗?这是加载lsm的正确方法吗?如果我module_init
全部使用实例会发生什么???最后,将 lsm 注册并加载到内核中的真正方法是什么?
其他问题:当我编译上面的代码时(当我完成时),我得到类似这样的错误:
error modpost: security_add_hooks undefined!
error modpost: security_hook_heads undefined!
这是什么?为什么我会收到这些错误?有趣的是,当我实现自己的 struct_add_hooks 和 security_hook_heads (相同但名称不同)时,此错误消失了。为什么?
任何人都可以帮助我实施一个好的 lsm 吗?:)
解决方案
推荐阅读
- reactjs - React Material ui 无法评估效果.next
- python - 无法使用 selenium 在 Web 上找到该元素
- python-3.x - 带有可选子命令的 argparse 未按预期工作
- apache-spark - 如何将 documentdb 连接到 emr 实例中的 spark 应用程序
- android - 如何使用数据绑定将回收站视图与活动绑定?
- thumbnails - 为什么 imagecreatefromjpeg 不适用于 .jpg 扩展名?
- c - 如何在 Rust 中调用预编译的 C 库中的函数
- haskell - 一种滑动窗
- ios - 使用 PDFKIT 从 PDF 按钮小部件触发应用内 Safari 浏览器 - IOS
- pine-script - 根据较高的时间范围及时绘制线,并使用 pine 脚本将它们保持在较低的时间范围内