Bene puoi ... a condizione di imitare il montaggio della partizione!
A un livello basso, montare una partizione non è altro che leggere la partizione raw per scoprire e caricare le sue diverse tabelle di sistema (tabella di allocazione, cartella radice, ecc.). Da quel momento, il sistema è in grado di darti accesso ai singoli file.
Se per qualsiasi motivo non vuoi che il kernel monti la partizione, la tua applicazione deve avere una conoscenza sufficiente sui componenti interni del suo file system per poter:
- trova e leggi la cartella principale (e qualsiasi altra cartella una volta trovata)
- identifica tutti i file (e cartelle) attivi all'interno di una cartella
- carica un file da una cartella
Poiché vuoi semplicemente passare clamav lì, puoi tranquillamente ignorare tutti i file speciali (dispositivi, symlink, unix domain socket) e elaborare solo file e cartelle normali. Inoltre, puoi ignorare qualsiasi attributo di file.
Quindi, cammina ricorsivamente le cartelle, leggi individualmente tutti i file e passa il loro contenuto a clamav
Ma ora la domanda è: qual è il guadagno / perdita della sicurezza rispetto ad una normale montatura della partizione?
Pro:
- nessun rischio di eseguire accidentalmente qualcosa dalla partizione
- nessun rischio di errore di sicurezza nel driver del file system (*) (nota che puoi mediare con un FUSE se ce n'è uno, o eseguendo l'analisi su una macchina virtuale)
- nessun rischio che un processo di terze parti possa accedere a qualsiasi file dalla partizione
Contro:
- devi implementare in modo sicuro tutte le strutture di basso livello e gli accessi di un file system
- devi fidarti di più del tuo codice che il kernel (molto testato) e il codice del driver
- devi assicurarti che il tuo codice segua tutte le possibili evoluzioni del file system
- devi implementare tutti i file system che vuoi essere in grado di clamax
Detto questo, è esattamente ciò che fa l'utilità fsck
: legge una partizione raw e cammina lungo la sua gerarchia per scoprire e correggere gli errori di basso livello. Ma è uno strumento di sistema di basso livello ...
TL / DR: a meno che tu non sia un esperto di file system, non sono sicuro che ne valga la pena. IMHO la seguente procedura dovrebbe essere abbastanza sicura:
- fsck la partizione - se è supportata da fsck
- montalo in una sottodirectory di una directory con permessi 700 per assicurarti che nessun processo non root possa accedervi, con
noexec
, nosymfollow
, noatime
flags
- passa su clamav
(*) mount
man page termina con
BUGS
It is possible for a corrupted file system to cause a crash.