Comando umask de Linux

Actualizado: 13/03/2021 by Computer Hope

comando umask

En sistemas operativos tipo Unix, el comando umask devuelve, o establece, el valor de la máscara de creación del modo de archivo del sistema.

Esta página cubre la versión de Linux de umask.

Descripción

En Linux y otros sistemas operativos tipo Unix, los nuevos archivos se crean con un conjunto de permisos por defecto. Específicamente, los permisos de un nuevo archivo pueden ser restringidos de una manera específica mediante la aplicación de una «máscara» de permisos llamada umask. El comando umask se utiliza para establecer esta máscara, o para mostrar su valor actual.

Sintaxis

umask 

Opciones

Acepta una representación simbólica de una máscara, o devuelve una.
Máscara Si se especifica una máscara válida, la umask se establece en este valor. Si no se especifica ninguna máscara, se devuelve el valor actual de umask.

¿Qué son los permisos y cómo funcionan?

Como ya sabrás, cada archivo de tu sistema tiene asociado un conjunto de permisos que se utilizan para proteger los archivos: los permisos de un archivo determinan qué usuarios pueden acceder a ese archivo, y qué tipo de acceso tienen a él.

Hay tres clases generales de usuarios:

  • El usuario propietario del archivo («Usuario»).
  • Los usuarios que pertenecen al grupo de propiedad definido del archivo («Grupo»).
  • Todos los demás («Otros»).
  • A su vez, para cada una de estas clases de usuarios, existen tres tipos de acceso al archivo:

    • La capacidad de mirar el contenido del archivo («Leer»).
    • La capacidad de cambiar el contenido del archivo («Escribir»).
    • La capacidad de ejecutar el contenido del archivo como un programa en el sistema («Ejecutar»).
      • Así, para cada una de las tres clases de usuario, hay tres tipos de acceso. En conjunto, esta información conforma los permisos del archivo.

        ¿Cómo se representan los permisos?

        Hay dos formas de representar los permisos de un archivo: simbólicamente (utilizando símbolos como «r» para lectura, «w» para escritura y «x» para ejecución) o con un valor numérico octal.

        Por ejemplo, al listar el contenido de un directorio en la línea de comandos utilizando el comando ls de la siguiente manera:

ls -l

verás (entre otra información) la información de los permisos de cada archivo. Aquí se representa simbólicamente, lo que se ve en el siguiente ejemplo:

-rwxr-xr--

Aquí hay diez símbolos. El primer guión («-«) significa que se trata de un archivo «normal», es decir, que no es un directorio (ni un dispositivo, ni ningún otro tipo de archivo especial). Los nueve símbolos restantes representan los permisos: rwxr-xr–. Estos nueve símbolos son en realidad tres conjuntos de tres símbolos cada uno, y representan los respectivos permisos específicos, de izquierda a derecha:

símbolos significado
rwx el propietario del archivo puede leer, escribir o ejecutar este archivo como un proceso en el sistema.
r-x cualquier persona del grupo del archivo puede leer o ejecutar este archivo, pero no escribir en él.
r– cualquiera puede leer este archivo, pero no escribir en él ni ejecutar su contenido como un proceso.

Especificación de la máscara de creación de ficheros mediante símbolos

La forma simbólica general de una máscara es la siguiente:

...

El símbolo de permiso es cualquier combinación de r (lectura), w (escritura) o x (ejecución), como se ha descrito anteriormente.

El símbolo de clase de usuario puede ser uno o más de los siguientes:

u Usuario (el propietario del archivo).
g Grupo (cualquier miembro del grupo definido del archivo).
o Otro (cualquier otro).
a Todos (equivalente a ugo).

El operador de permisos puede ser uno de los siguientes:

+ permitir que los permisos de archivo especificados se habiliten para las clases de usuario especificadas (los permisos que no se especifican no se modifican en la máscara).
prohibir que los permisos de archivo especificados se habiliten para las clases de usuarios especificadas (los permisos que no se especifican no se modifican en la máscara).
= permitir que se habiliten los permisos de archivo especificados para las clases de usuario especificadas (los permisos no especificados serán prohibidos por la máscara durante la creación del archivo).

Así, por ejemplo, el siguiente comando umask:

umask u+w

establece la máscara para que cuando se creen los archivos tengan permisos que permitan la escritura del usuario (propietario del archivo). El resto de los permisos del archivo no cambiarán respecto a los predeterminados por el sistema operativo.

Se pueden especificar múltiples cambios separando varios conjuntos de notación simbólica con comas (¡pero no con espacios!). Por ejemplo:

umask u-x,g=r,o+w

Este comando establece la máscara para que cuando se creen los siguientes archivos, tengan permisos que:

  1. prohíba que se establezca el permiso de ejecución para el propietario del fichero (usuario), dejando el resto de permisos del propietario sin cambios;
  2. habilite el permiso de lectura para el grupo, mientras prohíbe el permiso de escritura y ejecución para el grupo;
  3. habilite el permiso de escritura para otros, dejando el resto de permisos sin cambios.

Nota que si utilizas el operador igual («=»), cualquier permiso no especificado será específicamente prohibido. Por ejemplo, el comando

umask a=

Establece la máscara de creación de archivos para que los nuevos archivos sean inaccesibles para todo el mundo.

Especificación de la máscara de creación de archivos mediante representación numérica

La máscara de creación de archivos también se puede representar numéricamente, utilizando valores octales (los dígitos del 0 al 7). Cuando se utiliza la representación numérica octal, ciertos números representan ciertos permisos, y estos números se suman o se restan entre sí para representar el valor final de los permisos combinados. En concreto, los números 1, 2 y 4 representan los siguientes permisos:

.

número permiso
4 leer
2 escribir
1 ejecutar

Estos números se utilizan porque cualquier combinación de estos tres números será única. La siguiente tabla ilustra sus combinaciones únicas:

4

Valor de lectura + Valor de escritura + Valor de ejecución = Valor combinado: Equivalente simbólico:
0 0 0 0
0 0 1 x
0 2 0 2 w
0 2 3 wx 4 0 0 4 r
4 0 1 rx
2 0 6 rw 4 2 1 7

Para cada clase de usuario, un dígito puede representar sus permisos; usando el ejemplo anterior, podríamos representar el permiso simbólico de rwxr-xr– usando el número octal de tres dígitos 754. El orden de los dígitos es siempre el mismo: Usuario, Grupo, Otro.

El otro dígito de permiso

En las representaciones octales de los permisos de archivos, en realidad hay cuatro dígitos. Los tres dígitos importantes de los que hemos hablado son los tres últimos. El primer dígito es un indicador especial de permiso de archivo, y para esta discusión puede ser considerado siempre como cero. Así que de aquí en adelante, cuando hablemos del permiso de archivo 777, también puede ser referido como 0777.

Entonces, ¿cómo funciona realmente la umask?

La umask enmascara los permisos restringiéndolos en un determinado valor.

Esencialmente, cada dígito de la umask se «resta» del valor por defecto del sistema operativo para llegar al valor por defecto que usted define. En realidad no es una sustracción; técnicamente, la máscara se niega (se toma su complemento en bits) y este valor se aplica a los permisos por defecto mediante una operación lógica AND. El resultado es que la umask indica al sistema operativo qué bits de permiso debe «desactivar» cuando crea un archivo.

En Linux, el valor de los permisos por defecto es 666 para un archivo normal, y 777 para un directorio. Cuando se crea un nuevo archivo o directorio, el kernel toma este valor por defecto, «resta» el valor de la umask, y da a los nuevos archivos los permisos resultantes.

Esta tabla muestra cómo cada dígito del valor de la umask afecta a los permisos de los nuevos archivos y directorios:

3

6

.

(sin permiso permitido)

dígito de la umask permisos de archivo por defecto permisos de directorio por defecto
0 rw rwx
1 rw rw
2 rx
r r
4 wx 5 w w
x
7 (sin permiso permitido)

Así que si nuestro valor de umask es 022, entonces cualquier archivo nuevo tendrá, por defecto, los permisos 644 (666 – 022). Del mismo modo, cualquier directorio nuevo se creará, por defecto, con los permisos 755 (777 – 022).

Ejemplos

Para ver el valor actual de la umask de tu sistema, introduce el comando:

umask

que devuelve la umask de tu sistema como un número octal de cuatro dígitos, por ejemplo:

0002

De nuevo, el primer cero es un dígito de permiso especial y puede ser ignorado; para nuestros propósitos, 0002 es lo mismo que 002.

Para ver esto como una representación simbólica, usa la bandera -S:

umask -S

Que devuelve el mismo valor simbólicamente, por ejemplo:

u=rwx,g=rwx,o=rx

donde u significa usuario, g significa grupo y o significa otro. Esto nos está diciendo el Así que si creamos un nuevo archivo, tiene los permisos por defecto 664, que es el 666 (los permisos por defecto de los archivos) enmascarado por el 002 (nuestro valor de umask).

Probemos esto creando un nuevo archivo con el comando touch:

touch testfile

Y ahora obtengamos un listado de directorios para ese archivo:

ls -l testfile
-rw-rw-r-- 1 myusername myusername 0 Jan 7 14:29 testfile

Como era de esperar, el nuevo archivo tiene permisos -rw-rw-r–, o 0664: El propietario y el grupo pueden leer o escribir en el archivo, y los demás sólo pueden leerlo.

Ahora vamos a cambiar el umask. Para establecer una umask de 022, utilice el comando:

umask 022

Esto es lo mismo que ejecutar umask 0022; si especifica sólo tres dígitos, se asumirá que el primer dígito es cero. Verifiquemos que el cambio se produjo:

umask
0022

Y ahora vamos a crear un nuevo archivo:

touch testfile2

Y ahora vamos a ver su listado de directorios, con el primer archivo que hemos creado, usando el comodín del asterisco («*») para ver todos los archivos cuyo nombre empiece por «testfile»:

ls -l testfile*
-rw-rw-r-- 1 myusername myusername 0 Jan 7 14:29 testfile-rw-r--r-- 1 myusername myusername 0 Jan 7 14:39 testfile2

Como podéis ver, testfile2 tiene los permisos 644.

Aquí tienes otros ejemplos de comandos umask:

umask a+r

Ajusta la máscara para que los nuevos archivos permitan a todos los usuarios leerlos; los demás permisos no cambiarán respecto a los predeterminados.

umask a-x

Establece la máscara para que los nuevos archivos no sean inicialmente ejecutables por ningún usuario; los demás permisos no cambiarán respecto a los predeterminados.

umask u=rw,go=

Establece la máscara para que los nuevos archivos puedan ser leídos y escritos por el usuario propietario del archivo, pero no podrán ser ejecutados; los miembros del grupo y otros no tienen permisos para acceder al archivo.

umask 777

Hace que los nuevos archivos sean inaccesibles para todo el mundo – nadie puede leerlos, escribirlos o ejecutarlos.

umask 000

Hace que los nuevos archivos sean completamente accesibles (lectura, escritura y ejecución) para absolutamente todo el mundo. Sin embargo, esto es una mala idea. No haga esto.

chmod – Cambia los permisos de archivos o directorios.
csh – El intérprete de comandos del shell C.
ksh – El intérprete de comandos del shell Korn.
sh – El intérprete de comandos del shell Bourne.

Deja una respuesta

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