¿Qué es Umask?
Umask, o el modo de creación de archivos del usuario, es un comando de Linux que se usa para asignar los conjuntos de permisos de archivo predeterminados para carpetas y archivos recién creados. El término máscara hace referencia a la agrupación de los bits de permiso, cada uno de los cuales define cómo se establece su permiso correspondiente para los archivos recién creados. Los bits de la máscara se pueden cambiar invocando el comando umask.
Cuando usamos el término Umask, nos referimos a uno de los siguientes dos significados:
- La máscara del modo de creación de archivos de usuario que se utiliza para configurar los permisos predeterminados para archivos y directorios recién creados.
- El comando “umask” que se utiliza para establecer el valor de umask
Como probablemente ya sepa, todos los sistemas operativos basados en Unix tienen un conjunto de propiedades que se utilizan para definir quién puede leer, escribir o ejecutar archivos o directorios específicos. Hay tres categorías denominadas “clases de permisos” a las que se aplican estos permisos, y se indican a continuación.
- Usuario: El Usuario, por defecto, es el propietario o creador de un archivo o carpeta. La propiedad del nuevo archivo es predeterminada para este usuario.
- Grupo: un grupo es un conjunto de usuarios que comparten el mismo nivel de acceso o permisos a un archivo o carpeta.
- Otro: El grupo Otro se define como cualquier usuario no incluido en las dos categorías anteriores. Estos usuarios no han creado un archivo o carpeta, ni pertenecen a un grupo de usuarios específico. Este grupo incluye a todos los que no están identificados como usuarios o como parte de un grupo de usuarios. Cuando establecemos el nivel de permiso de un archivo o carpeta en Otro, otorga acceso de nivel de permisos a cualquier persona que acceda al archivo o carpeta.
Entonces, ¿qué sucede cuando un usuario crea nuevos archivos y directorios? El sistema asigna automáticamente los siguientes permisos a un archivo si usa el comando táctil.
[root@host ~]# touch test.txt
[root@host ~]# stat test.txt
File: test.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd03h/64771d Inode: 654750 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-04-21 12:53:25.612051178 -0400
Modify: 2020-04-21 12:53:25.612051178 -0400
Change: 2020-04-21 12:53:25.612051178 -0400
Birth: -
Si creamos un directorio, le asigna el siguiente conjunto de permisos,
[root@host ~]# mkdir test
[root@host ~]# stat test
File: test
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd03h/64771d Inode: 654751 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-04-21 12:54:25.172601585 -0400
Modify: 2020-04-21 12:54:25.172601585 -0400
Change: 2020-04-21 12:54:25.172601585 -0400
Birth: -
[root@host ~]#
La sintaxis del comando Umask
La entrada completa de la página de manual para umask es la siguiente.
umask [-p] [-S] [mode]
The user file-creation mask is set to mode.
If mode begins with a digit, it is interpreted as an octal number; otherwise it is interpreted as a symbolic mode mask similar to that accepted by chmod(1). If mode is omitted, the current value of the mask is printed.
The -S option causes the mask to be printed in symbolic form; the default output is an octal number.
If the -p option is supplied, and mode is omitted, the output is in a form that may be reused as input. The return status is 0 if the mode was successfully changed or if no mode argument was supplied, and false otherwise.
Para ver el valor actual de umask, usamos el comando umask. Ejecutar el comando umask por sí solo proporciona los permisos predeterminados que se asignan cuando se crea un archivo o una carpeta.
[root@host ~]# umask
0022
[root@host ~]#
Para cambiar estos valores, usaremos el siguiente comando.
[root@host ~]# umask ###
[root@host ~]# umask 022
Los símbolos ### en el primer comando se usan en lugar de un número octal real.
A continuación, podemos ver los valores traducidos del octal y cómo se relacionan.
Número | Permiso |
---|---|
4 | archivo |
2 | escribe |
1 | ejecutar |
Archivo | Escribe | Ejecutar | valor total | Equivalente simbólico: |
---|---|---|---|---|
0 | 0 | 0 | 0 | |
0 | 0 | 1 | 1 | X |
0 | 2 | 0 | 2 | w |
0 | 2 | 1 | 3 | wx |
4 | 0 | 0 | 4 | r |
4 | 0 | 1 | 5 | receta |
4 | 2 | 0 | 6 | rw |
4 | 2 | 1 | 7 | rwx |
Entonces, cuando ejecutamos un comando ls, los valores de permisos octales o simbólicos se muestran al comienzo de la salida.
[root@host ~]# ls
drwxr-xr-x 2 root root 4096 Apr 21 12:54 test/
-rw-r--r-- 1 root root 0 Apr 21 12:53 test.txt
Los permisos establecidos para el directorio de prueba son 755 o ‘rwx’ ‘rx’ ‘r-x’.
Los permisos establecidos para el archivo test.txt son 644 o ‘rw -‘ ‘r – -‘ ‘r – -‘.
Un guión significa un valor 0.
Encabezados simbólicos
--- no permission
--x execute
-w- write
-wx write and execute
r-- read
r-x read and execute
rw- read and write
rwx read, write and execute
Encabezados numéricos
0 --- no permission
1 --x execute
2 -w- write
3 -wx write and execute
4 r-- read
5 r-x read and execute
6 rw- read and write
7 rwx read, write and execute
Cómo funciona Umask
losmascarillaEl comando enmascara los niveles de permiso calificándolos con un cierto valor. Para explicar más cómo se aplica el valor de umask, lo ilustraremos con un example. Digamos que queremos establecer los permisos predeterminados para todos los archivos o carpetas nuevos en 644 y 755. Entonces usaríamos el siguiente comando.
[root@host ~]# umask 022
El permiso número “2” (permiso de escritura) se “filtrará” de los permisos predeterminados del sistema de 666 y 777 (de ahí el nombre “máscara”). A partir de ahora, el sistema asignará los permisos predeterminados de 644 y 755 en nuevos archivos y directorios. En pocas palabras, para calcular los bits de permiso para un nuevo archivo o directorio, simplemente restamos el valor de umask del valor predeterminado, así.
- 666 – 022 = 644
- 777 – 022 = 755
valor octal: permiso
- 0: leer, escribir y ejecutar
- 1: Lee y escribe
- 2: leer y ejecutar
- 3: solo lectura
- 4: escribir y ejecutar
- 5: escribir solamente
- 6: solo ejecutar
- 7: no permisos
Podemos usar la información anterior para calcular los permisos de nuestros archivos. Para examplesi nuestro umask se establece en 077, el permiso se puede calcular de la siguiente manera:
Poco | Dirigido a | permiso de archivo |
0 | Dueño | leer, escribir y ejecutar |
7 | Grupo | no permisos |
7 | Mundo | no permisos |
0: leer, escribir y ejecutar
7: no permisos
7: no permisos
Un umask de 000 hará que los directorios recién creados sean legibles, escribibles y ejecutables por todos (los permisos serán 777).
Ubicación de configuración de Umask
En la mayoría de las distribuciones de Linux, el valor de umask se puede encontrar y configurar en las siguientes ubicaciones:
- /etc/profile: aquí es donde se almacenan las variables predeterminadas de todo el sistema
- /etc/bash.bashrc: aquí es donde se almacenan los archivos de configuración de shell predeterminados
Símbolos de máscara
Como se indica en la página de manual de umask anterior, podemos usar símbolos específicos para especificar los valores de permiso que queremos establecer. Para obtener una vista previa del valor de umask establecido actualmente en símbolos, usamos el siguiente comando:
umask -S
Para cambiarlo, podemos usar el comando en el que las letras “u”, “g” y “o” representan al usuario, grupo y otro mundo, como se muestra a continuación.
umask u=$, g=$, o=$
Cuando configuramos los permisos de esta manera, complementamos cada marcador de posición “$” con los símbolos de permiso deseados. El igual”=El signo ” no es el único operador a nuestra disposición cuando configuramos umask con valores simbólicos. Podemos usar más “+” y menos “–” operadores también.
- El símbolo = permite habilitar permisos, prohibiendo permisos no especificados
- El símbolo + permite habilitar los permisos, ignorando los permisos no especificados
- El símbolo – prohíbe que se habiliten los permisos, ignorando los permisos no especificados
Nota: el uso de espacios después de las comas no funcionará, y bash mostrará el mensaje de error “operador de modo simbólico no válido”.
Hay un símbolo adicional que se puede usar cuando queremos establecer el mismo permiso para todas las clases de permisos a la vez (usuario, grupo y otros), y es:
umask a=
Conclusión
Ahora que comprendemos mejor la función de la máscara de creación del modo de archivo de usuario, podemos darle un buen uso. No solo nos ahorra un tiempo precioso y mejora la seguridad, sino que también nos brinda mejores capacidades de administración de permisos.
¡Empiece hoy!
¿Todavía tiene preguntas sobre cómo utilizar umask? Llámanos al 800.580.4985 o abre unacharlar¡o tiquete con nosotros para hablar con uno de nuestro equipo de soluciones bien informado o un asesor de hospedaje experimentado hoy!