В Linux, как мне запустить программу, когда несуществующий файл в определенном каталоге пытается прочитать?

У меня есть раздел на жестком диске, который зашифрован с помощью dm-crypt с использованием ключевой фразы. То, что я хочу сделать, - это всплывающее окно с запросом пароля, когда какая-либо программа пытается прочитать файл в этой целевой точке монтирования разделов.

Например. Я обычно монтирую свой том dm-crypt в каталог /mnt/crypt, При подключении внутри этого каталога находится папка "Музыка", в которой находится файл goodmusic.mp3. Таким образом, путь /mnt/crypt/Music/goodmusic.mp3.

Если я запускаю Clementine и пытаюсь воспроизвести этот файл без смонтированного зашифрованного тома, я получу ошибку "file not found".

Что я хочу сделать, это когда Клементина пытается открыть файл в этом каталоге (/mnt/crypt), появится всплывающее окно с запросом моего пароля для монтирования и монтированием тома. Я предполагаю, что для того, чтобы он работал, системный вызов "read" должен блокироваться, пока отображается приглашение на ввод пароля, чтобы системный вызов read не сразу сообщал об ошибке, пока у меня не было возможности ввести свой ключевая фраза.

Это возможно?

Я играл с inotify, но он не поддерживает события для несуществующих файлов.

1 ответ

(1)
inotify не сообщает о попытках доступа / чтения / записи к несуществующим файлам.
На самом деле, они не рассматриваются как события, потому что эти файлы не существуют вообще.

(2)

Что я хочу сделать, так это то, что когда Клементина пытается открыть файл в этом каталоге (/mnt/crypt), появляется всплывающее окно с запросом моего пароля для монтирования и монтирования тома. Я предполагаю, что для того, чтобы он работал, системный вызов "read" должен блокироваться, пока отображается приглашение на ввод пароля, чтобы системный вызов read не сразу сообщал об ошибке, пока у меня не было возможности ввести свой ключевая фраза.

Это довольно сложно. Одним из возможных решений является зацепка open Системный вызов и переопределите свою собственную версию. Ваша версия open просто действует как то, что вы описываете, в соответствии с файлом / каталогом, к которому пытается получить доступ процесс.

ссылка:
http://en.wikipedia.org/wiki/Hooking
http://www.gilgalab.com.br/hacking/programming/linux/2013/01/11/Hooking-Linux-3-syscalls/

Другие вопросы по тегам