Перехват событий доступа к файлам

Я хотел бы сделать кусок кода, который может знать, когда другое приложение пытается открыть или записать файл, а также может предотвратить этот доступ. Является ли это возможным ? Как ?

Например, для Zip-файла, содержащего видео, открытие файла с помощью VLC приведет мой инструмент, чтобы предотвратить VLC, чтобы открыть файл, разархивировать архив во временную папку и повторно открыть видео с помощью vlc.

Меня не интересует, насколько плоха эта идея, это больше о человеческом любопытстве и технических проблемах. И дело не в Zip и VLC, это мой собственный контейнер файлов.

Я полный noob в Linux Kernel, и я не являюсь носителем английского языка, поэтому я даже не знаю, как заполнить свой первый запрос Google. Любая помощь приветствуется!

One Solution collect form web for “Перехват событий доступа к файлам”

Модули безопасности Linux предназначены для контроля доступа к таким ресурсам, как файлы:

LSM был разработан для обеспечения конкретных потребностей всего, что необходимо для успешного внедрения модуля обязательного контроля доступа … LSM вставляет «крючки» (upcalls к модулю) в каждую точку ядра, где собирается системный вызов на уровне пользователя в доступе к важному внутреннему объекту ядра, таким как inodes и блоки управления задачами.

Чтобы реализовать это, я думаю, вам нужно будет создать драйвер устройства, который будет передавать такие события, как « open() был вызван. VLC открывает zip-файл с видео в нем» в процесс пользовательского пространства, который будет распаковывать соответствующий файл и вернуть имя распакованного файла, который ваш LSM-модуль затем перейдет к фактическому open вызову ядра. А затем на соответствующем вызове close() вы передадите это событие из вашего модуля LSM до вашего пользовательского пространства, чтобы он мог удалить распакованный видеофайл.

Это не тривиальное начинание. Помимо всего прочего, вам нужно быть очень осторожным, чтобы не вводить огромные дыры в безопасности: «Эй, эта вещь может быть использована для перезаписи /etc/shadow

Linux и Unix - лучшая ОС в мире.