lunes, 14 de septiembre de 2015

umask – Establecer los permisos por defecto

El comando umask controla los permisos por defecto dados a un archivo cuando este es creado. Usa notación octal para expresar una máscara de bits, que será utilizada para eliminar los atributos de modo (permisos) de un archivo. Echemos un vistazo:

[me@linuxbox ~]$ rm -f foo.txt
[me@linuxbox ~]$ umask
0002
[me@linuxbox ~]$ > foo.txt
[me@linuxbox ~]$ ls -l foo.txt
-rw-rw-r-- 1 me me 0 2008-03-06 14:53 foo.txt

Primero hemos eliminado cualquier copia antigua de foo.txt para asegurarnos de que empezamos de cero. A continuación, hemos ejecutado el comando umask sin argumentos para ver el valor actual. Ha respondido con el valor 0002 (el valor 0022 es otro valor por defecto muy común), que es la representación octal de nuestra máscara. Luego hemos creado una nueva instancia de foo.txt y hemos observado sus permisos.

Podemos ver que tanto el propietario como el grupo tienen permisos de lectura y escritura, mientras que los demás sólo tienen permisos de lectura. La razón por la que el mundo no tiene permisos de escritura es por el valor de la máscara. Repitamos nuestro ejemplo, esta vez estableciendo la máscara nosotros mismos:

[me@linuxbox ~]$ rm foo.txt
[me@linuxbox ~]$ umask 0000
[me@linuxbox ~]$ > foo.txt
[me@linuxbox ~]$ ls -l foo.txt
-rw-rw-rw- 1 me me 0 2008-03-06 14:58 foo.txt

Cuando establecemos la máscara como 0000 (en la práctica la desactivamos), podemos ver que el archivo ahora es editable por el mundo. Para entender cómo funciona, tenemos que mirar a los números octales de nuevo. Si tomamos la máscara y la expandimos a binario, y luego la comparamos con los atributos, podemos ver lo que sucede:

Permisos del archivo original
--- rw- rw- rw-
Máscara
000 000 000 010
Resultado
--- rw- rw- r--

Olvida por el momento los ceros a la izquierda (volveremos a ellos en un minuto) y observa que donde aparece el 1 en nuestra máscara, el atributo se elimina, en este caso, los permisos de escritura del mundo. Esto es lo que hace la máscara. Donde aparezca un 1 en el valor binario de la máscara, un atributo es desactivado. Si miramos el valor de máscara 0022, podemos ver lo que hace:

Permisos del archivo original
--- rw- rw- rw-
Máscara
000 000 010 010
Resultado
--- rw- r-- r--

De nuevo, donde aparece un 1 en el valor binario, el correspondiente atributo es desactivado. Prueba con algunos valores (prueba algunos sietes) para acostumbrarte a su funcionamiento. Cuando lo hayas hecho, recuerda limpiar:

[me@linuxbox ~]$ rm foo.txt; umask 0002

La mayoría de las veces no tendrás que cambiar la máscara; la que tu distribución trae por defecto irá bien. Sin embargo, en algunas situaciones de alta seguridad, querrás controlarla.

No hay comentarios:

Publicar un comentario