Linux
攔截文件訪問事件
我想做一段程式碼,它能夠知道另一個應用程序何時嘗試打開或寫入文件,並且還能夠阻止這種訪問。是否可以 ?如何 ?
例如,對於包含影片的 zip 文件,使用 VLC 打開文件會導致我的工具阻止 VLC 打開文件,將存檔解壓縮到臨時文件夾中,然後使用 vlc 重新打開影片。
我對這個想法有多糟糕並不感興趣,它更多的是關於個人的好奇心和技術挑戰。它與 zip 和 VLC 無關,它是我自己的文件容器。
我是 Linux 核心的新手。
Linux 安全模組旨在控制對文件等資源的訪問:
LSM 旨在提供成功實現強制訪問控制模組所需的一切的特定需求…… LSM 在核心中即將產生使用者級系統呼叫的每個點插入“鉤子”(對模組的向上呼叫)訪問重要的內部核心對象,例如 inode 和任務控制塊。
要實現這一點,我認為您必須創建一個設備驅動程序,它將諸如“
open()
已被呼叫。VLC 正在打開一個包含影片的 zip 文件”之類的事件傳遞給將解壓縮適當文件的使用者空間程序並返回解壓縮文件的名稱,然後您的 LSM 模組會將其傳遞給實際的核心open
呼叫。然後在相應的close()
呼叫中,您將該事件從 LSM 模組傳遞到您的使用者空間程序,以便它可以刪除解壓縮的影片文件。這不是一項微不足道的工作。除此之外,你需要非常小心,不要引入巨大的安全漏洞:“嘿,這東西可以用來重寫
/etc/shadow
!”