The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Контроль системных вызовов из драйвера Linux"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Контроль системных вызовов из драйвера Linux"
Сообщение от Rex emailИскать по авторуВ закладки on 14-Авг-03, 00:23  (MSK)
Доброе время суток, All!

Не подскажете как реализовать контроль системных вызовов (open, read, write) к конкретному файлу в модуле ядра Linux.
С sys_call_table и __NR_* const немного знаком. Есть несколько вопросов:
1) При перехвате __NR_open в мой системный вызов не попадает имя контролируемого файла при использовании команды cp (cp /tmp/xxx /tmp/tmp/xxx). В ср что нет open?!
2) Как идентифицировать в системных вызовах read/write etc., что операции производятся именно с моим файлом (/tmp/xxx)?

Заранее благодарен.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Контроль системных вызовов из драйвера Linux"
Сообщение от Oleg Vass Искать по авторуВ закладки on 14-Авг-03, 12:22  (MSK)
>Доброе время суток, All!
>
>Не подскажете как реализовать контроль системных вызовов (open, read, write) к конкретному
>файлу в модуле ядра Linux.
>С sys_call_table и __NR_* const немного знаком. Есть несколько вопросов:
>1) При перехвате __NR_open в мой системный вызов не попадает имя контролируемого
>файла при использовании команды cp (cp /tmp/xxx /tmp/tmp/xxx). В ср что
>нет open?!
>2) Как идентифицировать в системных вызовах read/write etc., что операции производятся именно
>с моим файлом (/tmp/xxx)?
>
>Заранее благодарен.

У меня возникла похожая проблема. Я делал обработчик системного вызова
sys_unlink(const char *pathname) с тем чтобы предотвратить случайное удаление некоторых файлов.Но, если для удаления файла использовалась команда "rm file"(т.е. относительный путь), мне было не определить полное имя.
Первая идея состояла в том, чтобы использовать таблицу ядра "current"(тип "current_task"). Далеее current->fs->pwd->d_name.name. Так мы получим имя родительского/рабочего каталога. Дальше нужно пройтись вверх по дереву каталогов, используя "..->pwd->d_parent" до корня. Но, если удаляемый файл находится в примонтированной ФС, корнем будет каталог монтирования.
Хотя я еще не пробовал, но думаю нужно использовать current->fs->mnt и так далее.

Также можно посмотреть, что делает ядро в своем обработчике.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Контроль системных вызовов из драйвера Linux"
Сообщение от Murr Искать по авторуВ закладки on 05-Окт-03, 15:14  (MSK)
>Доброе время суток, All!
>
>Не подскажете как реализовать контроль системных вызовов (open, read, write) к конкретному
>файлу в модуле ядра Linux.
>С sys_call_table и __NR_* const немного знаком. Есть несколько вопросов:
>1) При перехвате __NR_open в мой системный вызов не попадает имя контролируемого
>файла при использовании команды cp (cp /tmp/xxx /tmp/tmp/xxx). В ср что
>нет open?!

Криво ловите, видимо.

>2) Как идентифицировать в системных вызовах read/write etc., что операции производятся именно
>с моим файлом (/tmp/xxx)?

Если модуль ловит обращения к конкретному файлу, то можно его открыть из модуля, а в open проверять (проще всего сдублировать исходную реализацию open) - добавить перед fd_install проверку if (f->f_dentry == myfile->f_dentry) { current->files->fd[fd] = NULL; fput(f); return -EACCES; }

Возможно нужно проверять не dentry, а inode - сами смотрите по смыслу.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Контроль системных вызовов из драйвера Linux"
Сообщение от Bob Искать по авторуВ закладки on 07-Окт-03, 12:23  (MSK)
http://www.samag.ru/img/uploaded/p.pdf
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру