In passato avevamo visto in un articolo Come creare una cartella protetta in linux. Anche modificando i permessi di accesso ad una cartella però, questi si applicano solamente agli utenti normali del sistema.
Se un malware ad esempio volessi criptare i nostri file per poi farci pagare un riscatto, tipico comportamento di un ransomware, questo avrebbe solamente bisogno di accesso da root per poter modificare i nostri file.
Nei sistemi basati su *nix, è possibile impostare “extended attributes” sul file system chiamati xattrs, usando il comando chattr. La differenza principale fra chmod e chattr è che chmod cambia gli attributi del file, mentre chattr cambia gli extended file attribute che sono resi disponibili dal nostro file system, quindi non tutti i file system supportano questa funzionalità.
Solamente un utente con privilegi da root può settare e resettare questi attributi estesi. Se il bit di sola lettura è impostato, neanche il proprietario del file con permessi di scrittura può scriverlo. Essendo l’intera entry in sola lettura, sarà anche possibile creare hard links a questo file: il filesystem non può incrementare il numero di inode del file.
E’ possibile creare un file in vera sola lettura impostandone il corrispettivo attributo in questo modo:
chattr +i <file>
Una volta che l’attributo è impostato, non solo il file diventa immutabile ma non può neanche essere rinominato ne spostato in altre directory.
Per rimuovere il flag, ci basterà lanciare:
chattr -i <file>
Dal man di chattr:
A file with the ‘i’ attribute cannot be modified: it cannot be deleted or renamed, no link can be created to this file and no data can be written to the file. Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE capability can set or clear this attribute.