私は他のアプリケーションがファイルを開いたり書き込んだりするときを知り、このアクセスをブロックするコードを書くのが好きです。可能ですか?どのように?
たとえば、ビデオを含むzipファイルの場合、VLCでファイルを開くと、ツールはVLCがファイルを開くのを防ぎ、一時フォルダにアーカイブを解凍し、vlcを使用してビデオを再び開きます。
私はアイデアがどれほど悪いのか興味がなく、個人的な好奇心と技術的な課題にもっと興味があります。これはzipとVLCとは関係がなく、私のファイルコンテナです。
私はLinuxカーネルを初めて使用します。
ベストアンサー1
Linuxセキュリティモジュールファイルなどのリソースへのアクセスを制御するように設計されています。
LSMは、必要なアクセス制御モジュールを正常に実装するために必要なすべてを提供するように設計されています。をカーネルに挿入します。 inodeとジョブ制御ブロック。
これを達成するには、「呼び出し済みです。VLCがビデオを含むzipファイルを開いています」などのイベントを、そのファイルを解凍し、解凍したファイルの名前を返すユーザースペースプロセスに渡すデバイスドライバを作成する必要がありますopen()
と思います。 、LSMモジュールはそれを実際のカーネルopen
呼び出しに渡します。次に、そのclose()
呼び出しから解凍されたビデオファイルを削除できるように、LSMモジュールのイベントをユーザー空間プロセスに転送します。
これは小さな問題ではありません。それ以外にも、大きなセキュリティホールが生じないように非常に注意する必要があります。 「おい、これは書き直せるよ/etc/shadow
!」