Sticky bit
Da Wikipedia, l'enciclopedia libera.
In informatica, lo sticky bit è un attributo che può essere associato ad un file o ad una directory nei sistemi Unix.
Indice |
[modifica] Storia
Lo sticky bit venne introdotto nella quinta edizione di Unix, nel 1974, per essere usato solo sui file eseguibili. Quando veniva settato forzava il sistema operativo a mantenere l'ambiente del programma nella memoria virtuale dopo il termine dell'esecuzione del processo. Questo comportamento velocizzava le esecuzioni permettendo al kernel di operare un solo swap tra la memoria fisica e quella virtuale. I programmi usati frequentemente, come gli editor di testo, ne guadagnavano molto in velocità d'esecuzione. Uno dei problemi nati con l'uso dello sticky bit, era la sostituzione dell'eseguibile originale; per poterlo fare bisognava rimuovere lo sticky dall'eseguibile, eseguire il programma ed uscire per pulire la cache, sostituire l'eseguibile ed infine rimettere lo sticky bit.
La velocità guadagnata durante l'esecuzione venne persa quando Unix venne portato sui sistemi hardware che supportavano la Direct Memory Access (ed anche su quelli vecchi che sostituivano il sistema di swapping con il paging). Nonostante questi problemi, restò operativo in molte varianti della Versione 5 (in particolare sui sistemi Solaris [1] e su HP-UX). La release 4.4 Lite del BSD mantenne lo sticky bit sul proprio sistema, per poi eliminarlo nella versione OpenBSD (dalla release 3.7) e FreeBSD (dalla release 2.2.1); rimase in NetBSD. Nessuna versione di Linux ha mai supportato il comportamento tradizionale.
[modifica] Uso
Al giorno d'oggi, l'uso più comune dello sticky bit consiste nell'applicarlo alle directory dove, se settato, blocca gli item contenuti permettendone la modifica (rinomina o cancellazione) solo al proprietario del file, al proprietario della directory ed all'utente root. Spesso questo flag viene impostata sulla directory /tmp per evitare che utenti ordinari cancellino o spostino i file appartenenti agli altri utenti. Questo comportamento venne introdotto nel 4.3BSD (1986) ed è tuttora presente in molti sistemi Unix.
Inoltre, Solaris (dalla versione 2.5) ha aggiunto un comportamento speciale quando lo sticky bit è messo su file non-eseguibili: quando si fa accesso a questi file, il loro contenuto non viene messo in cache dal kernel. Viene di solito usato sui file di swap per evitare che l'accesso ad un file cancelli dati importanti dalla cache stessa. Viene anche usato, occasionalmente, per i test di benchmark.
[modifica] Esempi
Lo sticky bit può essere settato solo dal superuser. Usando il comando chmod, può essere aggiunto usando il suo formato ottale 1000 od il simbolo t (s è già usato per il bit di setuid). Ad esempio, per aggiungere il bit alla directory /usr/local/tmp, si potrebbe scrivere chmod +t /usr/local/tmp. O, per essere sicuri che la directory abbia i diritti standard della tmp, si scrive chmod 1777 /usr/local/tmp.
Nella notazione simbolica del file system di Unix, lo sticky bit viene rappresentato dalla lettera t al posto del carattere finale. Ad esempio, su Solaris 8, la directory /tmp, che per default ha lo sticky bit attivato, viene mostrata così:
$ ls -ld /tmp drwxrwxrwt 4 root sys 485 Nov 10 06:01 /tmp
Se viene settato su un file o directory senza che il bit di esecuzione sia disponibile per il gruppo others (utenti-non-owner e gruppo-non-owner), la lettera diventa maiuscola T:
# ls -l test -rw-r--r-- 1 root other 0 Nov 10 12:57 test # chmod +t test; ls -l test -rw-r--r-T 1 root other 0 Nov 10 12:57 test
[modifica] Note
![]() |
|||||||
---|---|---|---|---|---|---|---|
Progetto Informatica | Portale Informatica | BarCode | |||||
Categorie principali
|