#kernel #bpf #ebpf #userspace
#ядро #bpf #ebpf #пользовательское пространство
Вопрос:
Я знаю, что в качестве общего примечания файлы не должны считываться из kernelspace.
Однако мне интересно искать ключевые слова в определенных файлах с помощью программы BPF.
В идеале я хотел бы, чтобы программа BPF могла быть подключена к Kprobe, и когда событие срабатывает, я бы хотел, чтобы оно сообщало о чтении файла и подсчитывало случаи, когда ключевое слово появляется в файле.
Может кто-нибудь сказать мне, возможно ли чтение в таком файле, и, возможно, предложить некоторые рекомендации относительно того, как я мог бы это сделать.
Спасибо, Сэм
Комментарии:
1. Почему вы хотите сделать это из пространства ядра?
Ответ №1:
Нет, это невозможно.
Но, возможно, вы сможете достичь чего-то близкого, если пересмотрите свой дизайн:
- Если файл, который вы хотите прочитать, напрямую связан с процессом, который вы хотите исследовать, то, например, вы можете присоединить программу eBPF к функции, используемой этим процессом для доступа к файлу (например
read
,write
системные вызовы or ). Вы не сможете получить доступ к файлу, но у вас может быть доступ к данным, прочитанным или записанным вашим процессом, и подсчитать экземпляры ваших ключевых слов там. - Если содержимое файла напрямую не связано с отслеживаемым процессом, но оно каким-то образом необходимо для принятия решения, возможно, вы могли бы обработать его с помощью программы пользовательского пространства, а затем передать соответствующие данные (например, количество вхождений вашего ключевого слова) в карту eBPF. Затем программа eBPF может считывать эти данные и принимать решения на их основе.