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]
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
¿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.
- 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
- 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.
- Entonces, para abrir el archivo, tendríamos que ser administradores o no ser propietarios ni miembros del grupo.
- 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