umask

A raíz de que un alumno se ha dedicado a copiar las cuentas de sus compañeros en la suya propia, posiblemente para copiar las prácticas, surge la necesidad de proteger las cuentas, ya que los alumnos no lo hacen, a pesar de que durante los primeras clases de la asignatura se les explica cómo hacerlo.

El objetivo es que las nuevas cuentas se creen con unos determinados permisos, más restrictivos. Esto se hace con la utilidad umask disponible en los *nix. umask establece los permisos por defecto para los nuevos archivos y directorios creados por el proceso actual.

Recibe como argumento un número octal (las nuevas versiones también admiten sintaxis igual a la de chmod) a partir de la cual se calculan los permisos
efectivos de los nuevos directorios y archivos creados. Los permisos base de los archivos son 666 y de los directorios 777. Los permisos efectivos vienen dados por la “resta” a estos permisos base de la máscara. En realidad, no es realmente una resta, es el AND binario del complemento unario de la máscara (utilizando el NOT binario). Ejemplo de la wikipedia en el que se le aplica la máscara 174 a un directorio:
7778 = (111 111 111)2
1748 = (001 111 100)2
NOT(001 111 100)2 = (110 000 011)2
(111 111 111)2 AND (110 000 011)2 = (110 000 011)2
7778               NOT (174)8               (603)8

Aunque para mí es un poco engorroso. Es más fácil si se ve como resta de permisos. Así, la máscara
indica esto:

0 – read, write and execute (listar)
1 – read and write
2 – read and execute (listar)
3 – read only
4 – write and execute (listar)
5 – write only
6 – execute only
7 – no permissions

Para cada uno de los propietarios (propietario, grupo, otros). Así, 174 sería permiso de escritura y lectura para el propietario, ninguno para el grupo y escritura y ejecución para otros. Esto funciona bien para directorios. Para ficheros, cuyos permisos base son 666 a la lista anterior abría que quitar los permisos de ejecución.

Conocido esto, sólo nos queda modificar los permisos con los que se crean las cuentas de usuario. Para ello, tenemos que  indicar la mácara en el fichero de configuración de creación de usuarios etc/adduser.conf ó /etc/default/adduser, aunque también se puede establecer a través de Yast en openSUSE.

Para las cuentas de los usuarios,
queremos ser bastante restrictivos y sólo darle permisos al propietario (700). Así, pues, según lo anterior, la máscara a utilizar es 077: todos los permisos para el propietario y ninguno para grupo y otros.

umask y niveles de seguridad

umask se puede utilizar para generar diferentes niveles de seguridad:

valor de umask
Nivel de seguridad
Permisos efectivos (directorio)
022 Permissive 755
026 Moderate 751
027 Moderate 750
077 Severe 700

Por útlimo, señalar que podemos cambiar el comportamiento global a la hora de crear ficheros y directorios añadiendo una orden umask al profile, o el de nuestro usuario añadiéndolo, por ejemplo, en el .bashrc

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *