Comando Umask en Linux con ejemplos

El comando umask en Linux se usa para establecer permisos predeterminados para archivos o directorios que crea el usuario.

¿Cómo funciona el comando umask?

  • El comando umask especifica los permisos que el usuario no desea que se otorguen al archivo o directorio recién creado.
  • umask funciona haciendo un AND bit a bit con el complemento bit a bit (donde los bits se invierten, es decir, 1 se convierte en 0 y 0 se convierte en 1) de umask.
  • Los bits que se establecen en el valor de umask se refieren a los permisos, que no se asignan por defecto, ya que estos valores se restan del permiso máximo para archivos/directorios.

¿Cómo calcular el valor de umask?

Sintaxis:

$umask

[El comando anterior dará el siguiente resultado]

Comando umask en Linux sin parámetros (salida)

pratyay@pratyay-ROG-Strix-G531GT:~/Study/Linux/CommandTrials/umask$ umask
0002
  • Aquí, el primer dígito, 0, se llama sticky bit, es una función de seguridad especial.
  • Los siguientes tres dígitos representan los valores octales de la umask para un archivo o directorio.

Para una mejor comprensión del funcionamiento de umask, debemos comprender la configuración de seguridad del modo octal. Los tres valores de permisos rwx (lectura-escritura-ejecución) se convierten en valores binarios de tres bits y se representan mediante un solo valor octal como se muestra en la siguiente tabla:

permisos valor octal Valor binario Descripción
0 000 Sin autorización
-X 1 001 solo permiso para ejecutar 
-w- 2 010 solo permiso para escribir
-wx 3 011 permiso para escribir y ejecutar
r– 4 100 solo permiso para leer
receta 5 101 permiso para leer y ejecutar
rw- 6 110 permiso para leer y escribir
rwx 7 111 permiso para hacer las tres, es decir, leer, escribir y ejecutar

Simplificación:

Entendamos la tabla anterior con un ejemplo: Expliquemos el resultado anterior que obtuvimos usando umask, 0002

  • Para una mejor comprensión de la tabla anterior, puede parecer confuso al principio, pero es bastante simple, todo lo que debe recordar son los tres modos, rwx (lectura-escritura-ejecución).
  • el bit para el modo respectivo, es decir, en un número de 3 bits, el primer bit (más a la izquierda) es para leer, luego escribir y ejecutar respectivamente. En el ejemplo anterior, el comando umask genera 0002, no nos preocuparemos por el primer 0 a partir de ahora. los siguientes tres dígitos son 0 0 2.
  • Cada dígito aquí es para diferentes clases de usuarios, hay un total de 3 clases de usuarios en Linux,
    • El propietario
    • miembros del grupo
    • todos los demás
  • El resultado anterior (0 0 2) muestra que el acceso al propietario es 0, el acceso a los miembros del grupo es 0 y el acceso a todos es 2. Este 2 es un valor octal, para comprender los permisos de acceso, tendríamos que conviértalo a decimal, 2 es igual a 010 en decimal, que se puede aclarar en 0 para leer, 1 para escribir y 0 para ejecutar.
  • Entonces podemos concluir que el resultado anterior dice: solo permisos de escritura para todos.

¿Cómo configurar y actualizar el valor predeterminado de umask?

Podemos configurar y actualizar el valor predeterminado de umask usando el comando umask seguido de un parámetro, que debe ser un número entero entre 000 y 777. La sintaxis para actualizar el valor de umask es la misma que para establecer el valor de umask.

Configuración del valor de umask:

Podemos usar el comando umask para establecer los permisos predeterminados con los que se crearán los archivos/directorios.

Sintaxis

$umask 543

Comando umask en la terminal de Linux (Configuración del valor predeterminado de umask)

¿Cómo calcular los valores de umask para archivos y directorios?

Aquí, cuando ejecutamos el comando, los valores no se asignan directamente como 5 para el propietario, 4 para los miembros del grupo y 3 para los demás, sino que el valor que pasamos como argumento se resta del conjunto de permisos máximo/completo. Hay dos conjuntos completos de permisos:

  • Archivo -> El conjunto de permisos completo para un archivo es 666 (permiso de lectura/escritura para todos)
  • Directorio -> El conjunto de permisos completo para un directorio es 777 (lectura/escritura/ejecución)

Nota: No se pueden otorgar permisos de ejecución a los archivos de forma predeterminada, ya que puede causar un problema de seguridad, y los sistemas Linux son bastante conocidos por su increíble seguridad, por lo que no sería bueno.

Entonces, una vez que hayamos establecido el valor de umask en 543, veamos qué sucede cuando creamos un directorio (7-7-7) y un archivo (6-6-6)

Haciendo un directorio:

  • Cuando creamos un nuevo directorio, los permisos se calcularán como (permisos completos para el directorio) – (valor umask)es decir, 777 – 543 = 234
  • 234, se puede aclarar más como:
    • 2 para el propietario, es decir, 010 en binario, así que permisos de escritura para el propietario.
    • 3 para los miembros del grupo, que es 011 en binario, así que permisos de escritura y ejecución para los miembros del grupo.
    • 4 para todos los demás, eso es 100 en binario, así que solo permiso de lectura para todos los demás.

Hacer un directorio con umask personalizado

  • El resultado muestra lo siguiente: dw–wxr– , que es un poco confuso, pero cuando lo simplificamos, puede verse como d -w- -wx r– , aquí d significa directorio y los últimos 3 son los permisos para los respectivos usuarios como comentamos en el punto anterior.

Hacer un archivo:

  • Cuando creamos un nuevo directorio, el permiso se otorgará de manera similar pero con un ligero cambio de la siguiente manera: (permisos completos para el archivo) – (valor umask), es decir, 666-543 = 123
  • Linux no proporciona permisos de ejecución de forma predeterminada, incluso si se especifica en el umask. 
  • 123 se puede aclarar más como:
    • 1 para el propietario, que es 001 en binario, por lo que se le debe otorgar permiso de ejecución al propietario, pero Linux no otorga permiso de ejecuciónHacer un directorio:s por defecto, entonces, el valor es promovido por uno y obtenemos 010, y se concederá permiso de escritura al propietario.
    • 2 para los miembros del grupo, es decir, 010 en binario, así que permisos de escritura para los miembros del grupo.
    • 3 para todos los demás, es decir, 011 en binario, así que permiso de escritura y ejecución para todos los demás, pero nuevamente no se puede proporcionar el permiso de ejecución, por lo que el valor se promoverá una vez más y obtendremos 100, por lo que se otorgará el permiso de lectura a todos los demás

Hacer un archivo usando umask de configuración personalizada

  • La salida muestra, –w–wr–  , que se puede simplificar como – -w- -w- r– , es decir, escritura para el propietario, escritura para el grupo y lectura para todos los demás.
  • Ahora, cuando intentemos abrir este archivo como propietario, obtendremos el acceso denegado, ya que el propietario del archivo solo tiene acceso para escribir en él.

Intentando abrir el archivo sin acceso

  • Entonces, para abrir el archivo, tendríamos que ser administradores o no ser propietarios ni miembros del grupo.
  • Abrir archivo como administrador:

Abrir archivo como administrador

Entonces, de esta manera, es posible usar el comando umask para establecer permisos predeterminados para archivos y directorios. Cabe señalar que los permisos predeterminados para archivos y directorios son diferentes, ya que los archivos no brindan la opción de ejecución de forma predeterminada.

¿Cuál es la diferencia entre chmod y umask?

  • El comando umask solo se puede usar en archivos nuevos, es decir, al crear archivos nuevos, los archivos creados antes de usar el comando umask no tendrán efecto.
  • El comando chmod debe usarse en archivos que ya están presentes, se usa para cambiar los permisos de acceso de los archivos que se crearon anteriormente.

Por lo tanto, necesitamos el comando umask para establecer los permisos de acceso predeterminados para los archivos y directorios que se crearán en el futuro, y necesitamos el comando chmod para cambiar los permisos de acceso para los archivos que ya se crearon y están presentes en el sistema.

Publicación traducida automáticamente

Artículo escrito por dhondpratyay y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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