Доступ к абсолютным путям к файлам из драйвера ядра Linux в контексте вызова приложения из chroot - PullRequest
0 голосов
/ 25 апреля 2018

Вопрос о драйвере Linux.У меня есть приложение, которое эффективно вызывает мой модуль ядра.Модуль ядра должен читать файлы по определенному абсолютному пути во время вызова из приложения.

В нормальных условиях все работает нормально.

Проблема возникает, когда приложение запускается изchroot.На этом этапе, в контексте приложения, запущенного из chroot, мой драйвер больше не имеет доступа к абсолютному пути к файлу, который он должен прочитать.

Драйвер использует filp_open () для открытияфайл, который завершается ошибкой, когда приложение запускается из chroot.

Есть ли способ указать мне, какой корневой каталог для моего файла открывается для использования, не нарушая chroot приложения или не вызывая скачки с приложением, обращающимся к другим файлам в chroot.

Версия для Linux - ядро ​​centos 7.1 3.10.0-229-el7.x86_64 Любая информация, которую мы высоко ценим.

1 Ответ

0 голосов
/ 30 апреля 2018

Это заняло много времени в обход кода ядра, но я понял, как это сделать.

Сначала мне нужно было использовать get_fs_root (init_task.fs, & realrootpath) Это дает реальный корневой путь, а не путь chroot.

Затем мне нужно было найти имя файла, используя filename_lookup (), установив данные namei в моем корневом пути и передав флаг LOOKUP_ROOT, чтобы он искал его из реального корневого пути.

Наконец, мне пришлось использовать dentry_open (), чтобы открыть файл, используя путь, который я посмотрел. В этот момент я смог получить доступ и прочитать файл, который находится за пределами текущей среды chroot.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...