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

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

Например, для 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

Interesting Posts

Скрипты для отправки мне по электронной почте файла

Почему необходимо стереть первый MByte устройства OpenBSD CRYPTO?

Как определить логический тип сетевого устройства linux

Почему Gnome или KDE не производят собственный дистрибутив (или другие проекты для настольных компьютеров, если на то пошло)?

найти командную помощь

как я могу копировать файлы, которые хранятся в одной переменной

Убедитесь, что раздел зашифрован

Установлена ​​новая графическая карта NVidia, и теперь я не могу войти в систему

Как определить, какой файл .log содержит ошибку?

Калибровка и параметры калибровки

ls: Не показывать каталоги, которые соответствуют одному шаблону в подстановочных поисках, только файлы

ls показывает каталог, но он недоступен

Настроить экран GNU для повторного подключения к текущей ширине терминала при повторном подключении?

Выбор последних файлов и группировка по имени

Могу ли я сделать завиток или перезагрузить wget, если отключен?

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