next up previous
Next: Copias de seguridad Up: Sistema de ficheros Previous: Permisos de un archivo

Los bits SUID, SGID y sticky

Como se ha comentado en la sección anterior, los permisos de los archivos en Unix se corresponden con un número en octal que varía entre 000 y 777; sin embargo, existen unos permisos especiales que hacen variar ese número entre 0000 y 7777; se trata de los bits de permanencia (1000), SGID (2000) y SUID (4000).

El bit SUID o setuid se activa sobre un fichero añadiéndole 4000 a la representación octal de los permisos del archivo y otorgándole además permiso de ejecución al propietario del mismo; al hacer esto, en lugar de la x en la primera terna de los permisos, aparecerá una s o S sino hemos otorgado el permiso de ejecución correspondiente.

El bit SUID activado sobre un fichero indica que todo aquél que ejecute el archivo va a tener durante la ejecución los mismos privilegios que quén lo creó.

Esto también es aplicable al bit setgid pero, en este caso,a nivel de grupos del fichero en lugar de propietario.

Los bits de setuid y setgid dan a Unix una gran flexibilidad, pero constituyen al mismo tiempo la mayor fuente de ataques internos al sistema. Cualquier sistema Unix tiene un cierto número de ejecutables setuidados y/o setgiados. Cada uno de ellos, como acabamos de comentar, se ejecuta con los privilegios de quien lo creó --usualmente el root-- lo que directamente implica que cualquier usuario tiene la capacidad en modo privilegiado si es el administrador quien creó los ejecutables. Evidentemente, estas tareas han de estar controladas de una forma exhaustiva, ya que si una de elleas se comporta de forma anormal puede causar daños irreparables al sistema.

Es por esto que conviene estar atentos a los nuevos ficheros de estas características que se localicen en la máquina. Demasiadas aplicaciones de Unix se instalan por defecto con ejecutables setuidados cuando realmente no es necesario por lo que a la hora de instalar nuevo software o actualizar el existente hemos de acordarnos de resetear el bit de los ficheros que no lo necesiten.

Este tipo de ficheros a pesar de presentar ciertos riesgos son estrictamente necesarios en Unix. Un ejemplo clásico es el fichero binpasswd. Este fichero, entre otras, tiene la función de modificar el fichero de claves (etcpasswd o etcshadow). Como no resulta una solución apropiada dar permisos para todos los usuarios al fichero de contraseñas, lo que se hace es activar el bit setuid.

Por otra parte, el sticky bit o bit de permanencia se activa sumándole 1000 a la representación octal de los permisos de un determinado archivo y otorgándole además permiso de ejecución; si hacemos esto, vermos que en lugar de una x en la terna correspondiente al resto de usuarios aparece una t (si no le hemos dado permiso de ejecución al archivo aparecerá una T).

Si el bit de permanencia de un fichero está activado le estamos indicando al sistema operativo que se trata de un archivo muy utilizado, por lo que se conveniente que permanezca en memoria principal el mayor tiempo posible; esta opción se utilizaba en sistemas antiguos que disponían de muy poca RAM.

Lo que sí que sigue vigente es el efecto del sticky bit activado sobre un directorio: en este caso se indica al sistema operativo que, aunque los permisos normales digan que calquier usuario puede crear y eliminar ficheros sólo el propietario de cierto archivo y el administrador pueden borrar un archivo guardado en un directorio con esas características. Este bit, que sólo tiene efecto cuando es activado or el administrador, se utiliza principalmente en dierectorios del sistema de ficheros en los que interesa que todos puedan escribir pero que no todos puedan borrar los datos escritos como /tmp.


next up previous
Next: Copias de seguridad Up: Sistema de ficheros Previous: Permisos de un archivo
2003-01-16