martes, 15 de mayo de 2018

11 - Permisos especiales

t (sticky bit)

Cuando se lo asignamos a un directorio, conseguimos que los elementos que haya dentro, ficheros ó directorios, sólo puedan ser renombrados o borrados por su propietario o por el root, aunque el resto de usuarios tenga permisos de escritura sobre dichos elementos.

Se suele aplicar a directorios de acceso público que tienen todos los permisos asignados, como por ejemplo directorios temporales como /tmp ó /var/tmp

Creación de un directorio con sticky bit

El bit t se activa o desactiva empleando notación simbólica de la siguiente manera:
chmod +t directorio ó chmod -t directorio. Empleando notación octal se haría sumando 1000 a los permisos del directorio, chmod 1777 directorio
Sticky bit notación simbólica
Observación

Antiguamente se usaba para mantener la imagen de un ejecutable en memoria después de finalizar la ejecución del mismo pero con los avances en el hardware ya no se usa para esta función.

s (suid)

Cuando a un binario se le asigna el atributo s a nivel de usuario, los usuarios normales pueden ejecutarlo y obtener los privilegios del usuario propietario del ejecutable (por lo general root).

Expresado de manera técnica, el permiso especial suid aplicado sobre un binario a nivel de usuario provoca un cambio de dominio durante la ejecución haciendo que el usuario efectivo del binario sea el propietario del fichero y no el usuario que lo ejecuta.

Se activa o desactiva este bit empleando la notación simbólica de la siguiente manera: chmod u+s binario ó chmod u-s binario. También de forma octal se puede expresar sumando 4000 a los permisos del archivo: chmod 4755 binario


Suid notación simbólica y octal
Ejemplo

Supongamos que el ejecutable micat propiedad del root puede ser usado para leer ficheros por cualquier usuario. Si se le aplica el suid a este ejecutable, cualquier usuario podría leer ficheros del root a través de dicho binario sin tener permisos sobre esos ficheros. Veámoslo

Se copia un binario propiedad del root y se crea un fichero en /tmp al que se le quitan los permisos. 

Se comprueba, como lógicamente, el usuario asir tiene denegado el acceso al fichero.

Ahora se activa el bit s a nivel de usuario sobre el binario y se comprueba que está activado

Con el suid activado, asir ahora si tiene acceso al fichero (a través del binario únicamente)

s (sgid)

Cuando a un binario se le asigna el atributo s a nivel de grupo, los usuarios que pertenezcan a ese grupo pueden ejecutar ese archivo y obtener los privilegios del grupo propietario del ejecutable.

Expresado de manera técnica, el permiso especial suid aplicado sobre un binario a nivel de grupo provoca un cambio de dominio durante la ejecución haciendo que el grupo efectivo del binario sea el grupo propietario del fichero y no el grupo del usuario que lo ejecuta.

Se activa o desactiva este bit empleando la notación simbólica de la siguiente manera: chmod g+s binario ó chmod g-s binario. También de forma octal se puede expresar sumando 2000 a los permisos del archivo: chmod 2755 binario


Sgid notación simbólica y octal

sgid sobre Directorios

En el caso particular de aplicar el bit s a nivel de grupo sobre un directorio, los efectos son que a la hora de crear ficheros en ese directorio, el grupo propietario con el que salen por defecto dichos ficheros no será el grupo propietario del usuario que los crea, como debería ocurrir en situación normal, sino que será el grupo propietario del directorio que los contiene. O sea que se produce de nuevo un cambio de dominio en el grupo propietario, esta vez permanente claro.