martes, 1 de febrero de 2011

Sticky Bit: Añadiendo seguridad a nuestros ficheros y directorios

El sticky bit es un permiso de acceso que puede ser asignado a ficheros y directorios en sistemas Unix. Históricamente, el sticky bit se utilizaba en ficheros ejecutables. Cuando se asignaba, le indicaba al sistema operativo (SO) que mantuviera el programa en swap para ejecuciones posteriores (incluso de otros usuarios). Desde entonces el rendimiento de las tecnologías de almacenamiento persistente han mejorado mucho y este uso ha quedado obsoleto.

Hoy en día, el sticky bit se utiliza con directorios. Cuando se le asigna a un directorio, significa que los elementos que hay en ese directorio sólo pueden ser renombrados o borrados por el propietario del elemento, el propietario del directorio o el usuario root, aunque el resto de usuarios tenga permisos de escritura. El sticky bit está a menudo configurado para el directorio /tmp.

Asignando el sticky bit a un directorio utilizando el comando chmod

Si lo hacemos en modalidad octal, le colocamos 1 antes de especificar los demás permisos que comúmente asignamos (rwx). El siguiente ejemplo le da permisos rwx al usuario, grupo y otros (y también agrega el sticky bit al mismo).

# chmod 1777 dir

O podemos asignar únicamente el sticky bit a un directorio sin afectar los permisos comunes, de la siguiente manera.

# chmod +t dir

Una vez que asignamos el sticky bit a un directorio, veremos una (t) como último caracter en el bloque de permisos. En este ejemplo sería: drwxrwxrwt

# ls -ld /home/bala/dir 
drwxrwxrwt 2 bala bala 4096 2011-01-28 14:09 /home/bala/dir 

# ls -l dir 
total 8 
-rwxrwxrwx 1 bala bala 20 2011-01-28 14:12 bala.txt 
-rwxrwxrwx 1 guest guest 41 2011-01-28 14:13 guest.txt

En el ejemplo anterior como dir tiene permisos rwx para todos, todos los demás usuarios tienen permisos para crear sus propios ficheros o directorios dentro de él. Sin embargo, aun cuando los sub-directorios o ficheros dentro de dir tienen permisos rwx para todos, solo el dueño de ellos puede borrarlos o renumbrarlos. Otros usuarios no pueden renombrar ni eliminar a causa del sticky bit.

Podemos ver que bala.txt tiene permisos rwx para usuarios, grupos y otros. Pero cuando el usuario guest intente eliminarlo, verá el mensaje de error: “Operation not permitted”.

$ su guest 
Password: 

$ cd /home/bala/dir1 
$ rm bala.txt rm: cannot remove `bala.txt': Operation not permitted

Notemos además que el directorio /tmp tiene sticky bit habilitado por defecto. Quizás no te habías fijado hasta ahora. Ahora te das cuenta por qué /tmp debe tener el sticky bit habilitado.

$ ls -ld /tmp 
drwxrwxrwt 3 root root 4096 Jan 31 08:29 /tmp

Para remover el sticky bit de un directorio, usaremos también el comando chmod:

# chmod -t dir

Asignando sticky bit a ficheros

Como vimos al principio, a los ficheros que se habilita el sticky bit comúnmente son ejecutables. Igualmente que a los directorios, habilitamos el sticky bit de la siguiente manera.

# chmod +t fichero-ejecutable


Vía TheGeekStuff | Info Wikipedia

No hay comentarios:

Publicar un comentario