Módulos de segurança do Linux são projetados para controlar o acesso a recursos, como arquivos:
LSM was designed to provide the specific needs of everything needed to successfully implement a mandatory access control module ... LSM inserts "hooks" (upcalls to the module) at every point in the kernel where a user-level system call is about to result in access to an important internal kernel object such as inodes and task control blocks.
Para implementar isso, acho que você teria que criar um driver de dispositivo que transmitisse eventos como " open()
foi chamado. O VLC está abrindo um arquivo zip com um vídeo" para um processo de espaço do usuário que descompactaria o arquivo apropriado e retornaria o nome do arquivo descompactado, o qual seu módulo LSM passaria então para a chamada real de kernal open
. E, em seguida, na chamada close()
correspondente, você passaria esse evento do seu módulo LSM para o processo de espaço do usuário para que ele pudesse excluir o arquivo de vídeo descompactado.
Não é uma tarefa trivial. Entre outras coisas, você precisa ter muito cuidado para não apresentar grandes falhas de segurança: "Ei, isso pode ser usado para reescrever /etc/shadow
!"