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.