Как написать модуль безопасности Linux, чтобы отказать в удалении (Unlink) для ядра 6.x?Linux

Ответить Пред. темаСлед. тема
Anonymous
 Как написать модуль безопасности Linux, чтобы отказать в удалении (Unlink) для ядра 6.x?

Сообщение Anonymous »

Я хочу научиться писать модуль безопасности Linux, чтобы отрицать удаление файла. Связано с отключением. Поэтому я выбрал один из них и попытался зацепить это, чтобы увидеть, как и если это работает.

Код: Выделить всё

#include 
#include 
#include 
#include 

static int hello_lsm_inode_unlink(struct inode *dir, struct dentry *dentry) {
pr_info("LSM Hello World: Preventing unlink for file: %s\n", dentry->d_name.name);
return -EPERM;  // Prevent the file from being deleted
}

static struct security_hook_list hello_hooks[] = {
LSM_HOOK_INIT(inode_unlink, hello_lsm_inode_unlink),
};

static int __init hello_lsm_init(void) {
pr_info("LSM Hello World: Initializing\n");
security_add_hooks(hello_hooks, ARRAY_SIZE(hello_hooks), "lsm_hello");
return 0;
}

static void __exit hello_lsm_exit(void) {
pr_info("LSM Hello World: Exiting\n");
}

module_init(hello_lsm_init);
module_exit(hello_lsm_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("You");
MODULE_DESCRIPTION("Minimal LSM with inode_unlink hook");
< /code>
и Makefile: < /p>
EXTRA_CFLAGS += -DCONFIG_SECURITY_WRITABLE_HOOKS

obj-m := lsm_hello.o

all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
< /code>
Но когда я скомпилируюсь, я получаю эти ошибки, а файл .ko не генерируется: < /p>
make[1]: Entering directory '/usr/src/linux-headers-6.1.0-31-amd64'
CC [M]  /root/lsm_hello/lsm_hello.o
MODPOST /root/lsm_hello/Module.symvers
ERROR: modpost: "security_add_hooks" [/root/lsm_hello/lsm_hello.ko] undefined!
ERROR: modpost: "security_hook_heads" [/root/lsm_hello/lsm_hello.ko] undefined!
make[2]: *** [/usr/src/linux-headers-6.1.0-31-common/scripts/Makefile.modpost:127: /root/lsm_hello/Module.symvers] Error 1
make[1]: *** [/usr/src/linux-headers-6.1.0-31-common/Makefile:1986: modpost] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-6.1.0-31-amd64'
make: *** [Makefile:6: all] Error 2
< /code>
С некоторой пробной и ошибкой я обнаружил, что проблема возникает из этой строки: < /p>
security_add_hooks(hello_hooks, ARRAY_SIZE(hello_hooks), "lsm_hello");
< /code>
Если я прокомментирую это, то он собирается хорошо, и я могу проверить, что он работает: < /p>
root@debian:~/lsm_hello# insmod lsm_hello.ko
root@debian:~/lsm_hello# rmmod lsm_hello
root@debian:~/lsm_hello# journalctl --since "1 hour ago" | grep kernel.
Mar 16 15:21:33 debian kernel: LSM Hello World: Initializing
Mar 16 15:21:46 debian kernel: LSM Hello World: Exiting
Какой правильный способ написания этого, так как кажется, что правильный способ отличается от версии до версии?


Подробнее здесь: https://stackoverflow.com/questions/795 ... kernel-6-x
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»