¿Qué es umask en Linux y cómo se usa?

Computadora portátil Linux que muestra un indicador de bash
fatmawati achmad zaenuri/Shutterstock.com

En Linux, todos los directorios y archivos tienen permisos de acceso. Puedes usar chmod para establecer sus derechos de acceso preferidos para diferentes usuarios. Pero lo que decide su defecto permisos? Vamos a hablar acerca de umask.

Permisos de acceso

Todos los directorios y archivos tienen banderas llamadas bits de modo que deciden si se pueden leer, escribir o ejecutar. Ejecutar un archivo significa ejecutarlo como un programa o un script. Para un directorio, debe poder «ejecutar» un directorio para cd en ello. En conjunto, los ajustes del modo de bits se denominan permisos del directorio o archivo.

Hay tres conjuntos de permisos. Un conjunto es para el propietario del directorio o archivo. A menos que la propiedad haya sido cambiada con chownel propietario es la persona que creó el directorio o el archivo.

El segundo conjunto de permisos es para los miembros del grupo de usuarios al que se ha asignado el directorio o el archivo. Por lo general, este es el grupo de usuarios del propietario.

Hay un tercer y último conjunto de permisos para «otros». Es un cajón de sastre para todos los que no están incluidos en los dos primeros conjuntos.

Al separar los permisos de esta manera, se pueden otorgar diferentes capacidades a las tres categorías. Así es como se controla el acceso a directorios y archivos en Linux. Aunque es un esquema simple, proporciona una manera flexible y robusta de dictar quién puede hacer qué con cualquier directorio o archivo.

Los bits de modo

Puede ver los permisos para los archivos usando el ls comando y el -l (formato largo) opción.

ls -l any*

También veremos un directorio agregando el -d (directorio) opción. Sin esta opción, ls miraría los archivos dentro del directorio, no el directorio en sí.

ls -ld

Usando ls para ver los permisos en directorios y archivos

Al comienzo de cada entrada en el ls listado, hay una colección de 10 caracteres. Aquí hay un primer plano de esos caracteres para un archivo y para un directorio.

Los permisos de un archivo y directorio, primer plano

El archivo es la línea superior, el directorio es la línea inferior. El primer carácter nos dice si estamos mirando un directorio o un archivo. Una “d” indica un directorio y un guión “-” indica un archivo.

Los tres conjuntos de permisos están indicados por cada grupo de tres caracteres. De izquierda a derecha, estos son los permisos para el propietario, el grupo y otros. En cada conjunto de permisos, los tres caracteres, de izquierda a derecha, indican la configuración del permiso de lectura «r», el permiso de escritura «w» y el permiso de ejecución «x». Una letra significa que el permiso está establecido. Un guión «-” significa que el permiso no está establecido.

Para nuestro archivo de ejemplo, los 10 caracteres significan:

  • : Este es un archivo, no un directorio.
  • rwx: El propietario puede leer, escribir y ejecutar este archivo.
  • rw-: Otros miembros del mismo grupo al que está asignado este archivo pueden leer y escribir en el archivo, pero no pueden ejecutarlo.
  • r–: Todos los demás solo pueden leer el archivo.

Para nuestro directorio de ejemplo, los 10 caracteres significan:

  • d: Este es un directorio.
  • rwx: El propietario puede leer, escribir y ejecutar (cd en) este directorio.
  • rwx: Otros miembros del mismo grupo pueden leer, escribir y cd en este directorio.
  • receta: Todos los demás pueden cd en este directorio, pero solo pueden leer archivos. No pueden eliminar archivos, editar archivos o crear nuevos archivos.

Los permisos se almacenan en bits de modo en los metadatos del directorio o archivo. Cada bit de modo tiene un valor numérico. Todos ellos tienen un valor de cero si no están configurados.

  • r: El bit de lectura tiene un valor de 4 si está establecido.
  • w: El bit de escritura tiene un valor de 2 si está establecido.
  • X: El bit de ejecución tiene un valor de 1 si está establecido.

Un conjunto de tres permisos se puede representar mediante la suma de los valores de bits. El valor máximo es 4+2+1=7, lo que establecería los tres permisos en un conjunto en «activado». Eso significa que todas las permutaciones de los tres conjuntos se pueden capturar en un número de tres dígitos. Valor octal (base 8).

Tomando nuestro archivo de ejemplo anterior, el propietario tiene permisos de lectura, escritura y ejecución, que es 4+2+1=7. Otros miembros del grupo en el que se encuentra el archivo tienen permisos de lectura y escritura, que son 4+2=6. La categoría de otros solo tiene el conjunto de permisos de lectura, que es simplemente 4.

Entonces, los permisos para ese archivo se pueden expresar como 764.

Usando el mismo esquema, los permisos para el directorio serían 775. Puede ver la representación octal de los permisos usando el stat dominio.

los chmod (chángel modificacióne bits) es la herramienta utilizada para establecer los permisos en directorios y archivos. Pero no dicta qué permisos se establecen en un directorio o archivo cuando lo crea. Para ello se utiliza un conjunto predeterminado de permisos.

Los permisos predeterminados y umask

Los permisos predeterminados para un directorio son 777 y los permisos predeterminados para un archivo son 666. Eso le da a cada usuario acceso completo a todos los directorios y la capacidad de leer y escribir cualquier archivo. El bit de ejecución no está establecido en los archivos. No puede crear un archivo que ya tenga establecido el bit de ejecución. Eso podría dar lugar a riesgos de seguridad.

Sin embargo, si crea un nuevo directorio y un nuevo archivo y mira sus permisos, no se establecerán en 777 y 666. Crearemos un archivo y un directorio, luego usaremos stat canalizado a través grep para extraer la línea con la representación Octal de sus permisos.

touch umask-article.txt
mkdir howtogeek
stat umask-article.txt | grep "Access: ("
stat howtogeek | grep "Access: ("

permisos predeterminados para un directorio y archivo, y la salida estadística para cada uno de ellos

Están configurados en 775 para el directorio y 664 para el archivo. No están configurados con los permisos predeterminados globales porque otro valor los modifica, denominado valor umask.

El valor de umask

El valor de umask se establece globalmente con un valor para root y otro diferente para todos los demás usuarios. Pero se puede establecer en un nuevo valor para cualquier persona. Para ver cuál es la configuración actual de umask, use el umask dominio.

umask

El valor de umask para un usuario regular

Y para la raíz:

umask

El valor de umask para el usuario root

Los permisos en un directorio o archivo recién creado son el resultado del valor de umask que modifica los permisos predeterminados globales.

Al igual que los bits de modo, el valor de umask representa los mismos tres conjuntos de permisos (propietario, grupo y otros) y los representa como tres dígitos octales. A veces los verá escritos como cuatro dígitos, con el primer dígito como cero. Esa es una forma abreviada de decir «este es un número octal». Son los tres dígitos más a la derecha los que cuentan.

El valor umask no puede agregar permisos Sólo puede eliminar—o enmascarar—permisos. Es por eso que los permisos predeterminados son tan liberales. Están diseñados para reducirse a niveles sensibles mediante la aplicación del valor umask.

Un conjunto de permisos predeterminados no se adaptará a todos los usuarios, ni se adaptará a todos los escenarios. Por ejemplo, los directorios y archivos creados por root necesitarán permisos más restrictivos que el usuario promedio. E incluso un usuario promedio no quiere que todos en la categoría de otros puedan ver y cambiar sus archivos.

Cómo umask enmascara los permisos

Restar el valor de la máscara de los permisos predeterminados le da los permisos reales. En otras palabras, si se establece un permiso en el valor de umask, no establecerse en los permisos aplicados al directorio o archivo.

Los valores de umask funcionan a la inversa de los valores de permisos habituales.

  • 0: No se eliminan los permisos.
  • 1: El bit de ejecución está desactivado en los permisos.
  • 2: El bit de escritura está desactivado en los permisos.
  • 4: El bit de lectura está desactivado en los permisos.

Los permisos predeterminados de 777 para directorios y 666 para archivos fueron modificados por el valor umask de 002 para producir los permisos eventuales de 775 y 664 en nuestro directorio y archivo de prueba.

stat umask-article.txt | grep "Access: ("
stat howtogeek | grep "Access: ("

Los permisos eventuales en un directorio y un archivo

Esto elimina el permiso de escritura de la categoría de otros tanto en el directorio como en el archivo.

si root crea un directorio, se aplica su valor umask de 022. El permiso de escritura se elimina para la categoría de otros y también para la categoría de grupo.

sudo mkdir root-dir
stat howtogeek | grep "Access: ("

El permiso cuando root crea un directorio

Podemos ver que los permisos predeterminados de 777 se han reducido a 755.

RELACIONADO: Cómo auditar la seguridad de su sistema Linux con Lynis

Cambiar el valor predeterminado de umask

Hay diferentes valores de umask para shells de inicio de sesión y shells que no son de inicio de sesión. Los shells de inicio de sesión son los shells que le permiten iniciar sesión, ya sea de forma local o remota a través de SSH. Un shell sin inicio de sesión es un shell dentro de una ventana de terminal cuando ya ha iniciado sesión.

Tenga mucho cuidado si cambia el shell de inicio de sesión umask. No aumente los permisos y reduzca su seguridad. En todo caso, debería inclinarse por reducirlos y hacerlos más restrictivos.

En Ubuntu y Manjaro, la configuración de umask se puede encontrar en estos archivos:

  • Iniciar sesión Shell umask: Para el valor predeterminado de umask del shell de inicio de sesión: /etc/profile
  • Shell sin inicio de sesión: Para el valor predeterminado de umask del shell sin inicio de sesión: /etc/bash.bashrc

En Fedora, la configuración de umask se puede encontrar en estos archivos:

  • Iniciar sesión Shell umask: Para el valor predeterminado de umask del shell de inicio de sesión: /etc/profile
  • Shell sin inicio de sesión: Para el valor predeterminado de umask del shell sin inicio de sesión: /etc/bashrc

Si no tiene una necesidad apremiante de cambiarlos, es mejor dejarlos solos.

La forma preferida es establecer un nuevo valor de umask para cualquier cuenta de usuario individual que deba diferir del valor predeterminado. Se puede colocar una nueva configuración de umask en el archivo “.bashrc” de un usuario en su directorio de inicio.

gedit .bashrc

Abriendo el archivo .bashrc en un editor

Agregue su configuración de umask cerca de la parte superior del archivo.

Agregar el valor umask al archivo .bashrc

Guarde el archivo y cierre el editor. abra una nueva ventana de terminal y verifique el valor de umask con el umask dominio.

umask

Comprobando el nuevo valor de umask

El nuevo valor está activo.

RELACIONADO: Cómo conectarse a un servidor SSH desde Windows, macOS o Linux

Cambios a corto plazo en umask

Si tiene un requisito a corto plazo para un valor de umask diferente, puede cambiarlo para su sesión actual usando el umask dominio. Tal vez vaya a crear un árbol de directorios y algunos archivos y desee tener una mayor seguridad en ellos.

Puede establecer el valor de umask en 077 y luego verificar que el nuevo valor esté activo.

umask 077
umask

Establecer un valor de umask temporal

Configurar la máscara para que tenga un valor de 7 en el grupo y otras categorías significa que todos los permisos se eliminan de esas categorías. Nadie más que usted (y root) podrá ingresar a los nuevos directorios y leer y editar sus archivos.

mkdir secure-dir
ls -ld secure-dir

Creando un nuevo directorio en una sesión con un valor umask temporal

Los únicos permisos son para el propietario del directorio.

mkdir secure-file.txt
ls -ld secure-file.txt

Crear un nuevo archivo en una sesión con un valor umask temporal

El archivo está protegido contra la intromisión de otros usuarios. Al cerrar la ventana de su terminal, se descarta la configuración temporal de umask.

Otras formas en que se usa umask

Linux permite que algunos procesos hereden los valores de umask del sistema o que se les proporcione su propia configuración de umask. Por ejemplo, useradd utiliza una configuración de umask para crear directorios de inicio de nuevos usuarios.

Un valor umask también se puede aplicar a un sistema de archivos.

less /etc/fstab

Mirando el archivo /etc/fstab con menos

En esta computadora, el sistema de archivos “/boot/efi” tiene una configuración de umask de 077 aplicada.

La configuración de umask en el archivo /etc/fstab

Mirando el punto de montaje del sistema de archivos con ls podemos verificar que el valor de umask ha eliminado todos los permisos de todos menos del propietario, root.

ls /boot/efi -ld

Usar ls para ver los permisos en el punto de montaje del sistema de archivos "/boot./efi"

umask y los permisos se necesitan mutuamente

Los permisos predeterminados se aplican a un directorio o archivo después han sido transformados por el valor umask. Será muy raro que necesite cambiar el valor de umask de forma permanente para un usuario, pero configurar temporalmente su valor de umask para otorgar un conjunto más estricto de permisos mientras crea una colección de directorios o documentos confidenciales es una manera rápida y fácil de reforzar su seguridad.

RELACIONADO: Cómo proteger su servidor Linux con un firewall UFW

Deja un comentario

En esta web usamos cookies para personalizar tu experiencia de usuario.    Política de cookies
Privacidad