|
||
| [IT] File immutabili | ||
|
File immutabili Un'interessante aspetto dei filesystem ext2 ed ext3 sono i file immutabili (con le opportune patch del kernel anche per qualche altro filesystem). Ogni file su tali partizioni ha una serie di attributi non visualizzabili direttamente con il comando "ls", fra cui quello dell'immutabilita'. Cosa significa che un file e' immutabile? Un file e' immutabile quando non puo' essere modificato o cancellato, ma puo' essere solo letto. Una volta che il flag di immutabilita' di un file viene attivato, neanche il superuser puo' modificare il file stesso (indipendentemente dai permessi). Un file puo' essere reso immutabile con il comando chattr +i <nome_del_file>Invece, per verificare che un file sia o non sia immutabile si puo' usare il comando lsattr <nome_del_file>Solo il superuser puo' attivare o disattivare questo attributo. Vediamo un esempio: 1 [root@nomehost /prova]# touch gabry.txt 2 [root@nomehost /prova]# ls -l gabry.txt 3 -rw-r--r-- 1 root root 0 lug 4 18:52 gabry.txt 4 [root@nomehost /prova]# lsattr gabry.txt 5 -------- gabry.txt 6 [root@nomehost /prova]# chattr +i gabry.txt 7 [root@nomehost /prova]# ls -l gabry.txt 8 -rw-r--r-- 1 root root 0 lug 4 18:52 gabry.txt 9 [root@nomehost /prova]# lsattr gabry.txt 10 ----i--- gabry.txt 11 [root@nomehost /prova]# rm gabry.txt 12 rm: remove write-protected file `gabry.txt'? Y 13 rm: cannot unlink `gabry.txt': Operation not permitted 14 [root@nomehost /prova]# chattr -i gabry.txt 15 [root@nomehost /prova]# lsattr gabry.txt 16 -------- gabry.txt 17 [root@nomehost /prova]# rm gabry.txt 18 rm: remove `gabry.txt'? Y 19 [root@nomehost /prova]#L'attributo viene attivato con il comando alla riga 6. Come si puo' vedere dalle righe 3 e 7, con il tradizionale comando "ls" non si ha alcuna differenza. Se si prova a cancellare "gabry.txt", la risposta e' negativa: non e' possibile farlo (11, 12, 13), neanche essendo "root"!!! Appare quindi evidente come il rendere un file immutabile e' comodo sia come antidoto alla distrazione, sia come uno dei mezzi disponibili per aumentare la sicurezza. Bisogna fare attenzione, pero', al tipo di file per cui si attiva l'immutabilita'. Se si rendesse necessario reinstallare un'applicazione o un package, infatti, si dovrebbero disattivare prima gli attributi di immutabilita' dei file coinvolti. Il rischio, altrimenti, e' l'avere una applicazione installata a meta' e probabilmente non funzionante. Anche le directory possono essere rese immutabili, esattamente allo stesso modo dei file. Diamo un'occhiata al seguente esempio: 1 [root@nomehost /prova]# ls 2 prova prova.c 3 [root@nomehost /prova]# cd .. 4 [root@nomehost /]# lsattr -d /prova/ 5 -------- /prova/ 6 [root@nomehost /]# chattr +i /prova 7 [root@nomehost /]# lsattr -d /prova/ 8 ----i--- /prova/ 9 [root@nomehost /]# cd /prova 10 [root@nomehost /prova]# vi prova.c 11 "prova.c" 5L, 51C written 12 [root@nomehost /prova]# touch gabry.txt 13 touch: gabry.txt: Permission denied 14 [root@nomehost /prova]# cd .. 15 [root@nomehost /]# chattr -i /prova 16 [root@nomehost /]# cd /prova 17 [root@nomehost /prova]# touch gabry.txt 18 [root@nomehost /prova]#Lo scopo finale e' la verifica delle proprieta' di immutabilita' su una directory. La directory prova, inizialmente contiene due file (righe 1,2). Per vedere gli attributi particolari di una directory, occorre specificare il parametro "-d" a "lsattr": e' quello che viene fatto alle righe 4 e 7. Dopo aver attivato l'immutabilita' su "/prova" (6), provo a modificare uno dei file che contiene, ad esempio "prova.c". L'editor e' in grado di modificarlo (11). La creazione di un file vuoto (12), invece, non ha successo. Il motivo per cui questi due tipi di operazioni hanno avuto esito opposto e' semplice: con la riga 6, e' stata resa immutabile la directory e non tutto il suo contenuto. Infatti, e' possibile modificare il file "prova.c" perche' non si agisce sulla directory ma su un file al suo interno. Un file nuovo non puo' essere creato perche' si sta scrivendo nella directory (aggiunta di un nuovo file = modifica directory). Lo stesso avviene se si cerca di cancellare "prova.c": non e' possibile perche' questa volta si sta modificando il contenuto della directory e non del file. Una volta rimossa l'immutabilita' dalla directory (15) tutto ridiventa normale. Ulteriori informazioni su "chattr" ed "lsattr" si possono reperire attraverso il manuale (man chattr, man lsattr). I comandi "chattr" e "lsattr" fanno parte del pacchetto "e2fsprogs". |
||
(c) 1999-2006
|