En informàtica, el sticky bit o bit enganxós és una propietat dels permisos d'accés assignats a fitxers i directoris.

Història modifica

El bit enganxós es va introduir en la cinquena edició d'Unix (el 1974) per al seu ús en arxius executables purs. Quan aquest bit s'estableix actiu, el sistema operatiu es retenia el segment de codi en l'espai de memòria d'intercanvi després que el procés acabés la seva execució. Aquest fet n'accelera les execucions posteriors, ja que permet al nucli del sistema tornar a moure el programa a memòria amb menys operacions. Així, els programes d'ús més freqüent com a editors es poden carregar més de pressa. El principal problema d'aquesta solució és el reemplaçament de l'executable (per exemple, durant una actualització), per a poder-lo reemplaçar, s'ha de desactivar aquest bit, executar el programa i sortir-ne per netejar la memòria, i després restaurar el bit enganxós.[1]

Avui dia, només mantenen aquest comportament els sistemes HP-UX i UnixWare. Solaris el va abandonar el 2005 així com BSD el va mantenir fins a convertir-se en OpenBSD i FreeBSD. No hi ha distribucions de Linux que suportin aquest antic comportament.

Ús modifica

L'ús més comú avui en dia és en els directoris. Quan el bit enganxós és activat, només el propietari d'un element del directori, o bé el propietari del directori o el superusuari (root) poden canviar el nom, modificar o eliminar el fitxer. Sense el bit enganxós, qualsevol usuari amb permisos d'escriptura i execució per al directori en pot modificar o eliminar qualsevol fitxer contingut, independentment del seu propietari. Normalment, aquest bit enganxós es troba el /tmp per evitar que usuaris ordinaris puguin modificar fitxers d'altres usuaris. Aquesta funcionalitat va ser introduïda en BSD 4.3 el 1986 i avui en dia es troba estès per una àmplia majoria del sistemes Unix moderns.[2]

Exemples modifica

El bit enganxós s'estableix mitjançant la comanda chmod indicant com a paràmetre el símbol t (el símbol natural s ja estava utilitzat pel bit que indica els permisos que pren el procés quan s'executa el fitxer) o també en mode octal el valor 1000.

Per exemple, per activar aquest bit en un directori com /usr/local/tmp es pot usar la comanda:

$ chmod +t /usr/local/tmp

o també utilitzant el mode octal:

$ chmod 1777 /usr/local/tmp

Hem de tenir en compte que en el segon exemple, el mode octal, estableix també la resta de permisos indicats amb els números 7.

Un altre exemple per a realitzar l'operació contrària de desactivar aquest bit, la comanda seria:

$ chmod -t /usr/local/tmp

o bé, en mode octal:

$ chmod 0777 /usr/local/tmp

En aquest cas d'utilitzar la fórmula numèrica, el 0 seria opcional i també hem de tenir en compte que estarem establint la resta de permisos.

Vegeu també modifica

  • chmod: comanda per modificar els permisos d'accés a fitxers.[3]

Referències modifica

  1. W. Richard Stevens. «Files and Directories». A: Advanced Programming in the UNIX Environment. Addison Wesley, 1992. ISBN 0-201-56317-7. «On earlier versions of Unix this bit was known as the sticky bit. If it was set for an executable program file, then the first time the program was executed a copy of the program's text was saved in the swap area when the process terminated. (The text portion of a program is the machine instructions.) This caused the program to load into memory faster the next time it was executed, because the swap area was handled as a contiguous file, compared to the possibly random location of data blocks in a normal Unix filesystem.» 
  2. «Synopsis - man pages section 2: System Calls». Docs.oracle.com, 01-11-2011. [Consulta: 10 abril 2014].
  3. «chmod(1) - Linux manual page». Man7.org. [Consulta: 10 abril 2014].

Enllaços externs modifica