Linux / Comando umask: limitar permisos de nuevos archivos y directorios
umask establece los bits de permiso que deben eliminarse cuando la shell y sus procesos hijos crean nuevos archivos o directorios. No cambia los permisos de los archivos existentes.
Los permisos de creación normalmente son 666 para archivos y 777 para directorios; al aplicar umask 022, los archivos ordinarios se crean con 644 y los directorios con 755. Esto no es una simple resta de números, sino que elimina los bits de máscara de los bits permitidos. Si un programa solicita un modo más restrictivo, el resultado real será aún más limitado.
Sintaxis básica
umask [-S] [máscara]
La implementación instalada y las opciones pueden variar según la distribución. Verifique la descripción de help umask en el sistema actual.
Ejemplos de uso
Comprobar máscara actual
Muestra la máscara octal aplicada en la shell.
umask
Ver en forma simbólica
Muestra los permisos actualmente permitidos en forma de caracteres para que sean fáciles de leer.
umask -S
Restricción de permisos de nuevos archivos en la shell actual
Antes de modificarla, consulte umask y anote el valor actual. umask 027 cambia la máscara de esta sesión y de sus futuros procesos hijos; no modifica los elementos existentes. Al terminar la práctica, ejecute umask VALOR_ANTERIOR, sustituyendo el marcador por el valor octal que anotó.
umask 027
umask
Comprobar los permisos creados con umask 027
Ejecute la práctica en un directorio nuevo sin demo.txt ni demo-dir. En el caso habitual, touch solicita permisos 666 y mkdir, 777; la máscara 027 produce 640 y 750, respectivamente, si no intervienen otras políticas. Usar touch sobre un archivo existente no vuelve a calcular sus permisos. Restaure después la máscara anterior como se indicó arriba.
umask 027
umask
touch demo.txt
mkdir demo-dir
stat -c '%a %n' demo.txt demo-dir
Ejemplo de salida (cuando no hay políticas adicionales como ACL en el sistema de archivos):
0027
640 demo.txt
750 demo-dir
umask se aplica al shell actual y a sus procesos hijos y no cambia los permisos de los archivos que ya existen. Los permisos reales también se ven afectados por el modo solicitado por el programa y por las políticas de ACL o del sistema de archivos, así que confirme con stat para rutas importantes.
La máscara no es una simple resta decimal, sino que se aplica de manera que oculta los bits de permisos solicitados. Por lo tanto, para archivos normales que no solicitaron bits de ejecución desde el inicio, cambiar umask no añadirá automáticamente el bit de ejecución. El shell al iniciar sesión, el administrador del servicio o el contenedor pueden establecer diferentes máscaras.
Opciones y formatos principales
| Máscara u opción | Descripción |
|---|---|
022 |
Un ejemplo común que restringe la escritura del grupo y de otros usuarios. |
027 |
Elimina la escritura del grupo y todos los permisos de otros usuarios. |
-S |
Muestra la configuración actual en formato simbólico. |
-p |
Se muestra en una forma que se puede volver a ejecutar en Bash. |
Precauciones al usar
umask es un comando incorporado de la shell Bash, por lo que incluso si se ejecuta en una shell hija separada, no cambiará la configuración de la shell principal. Un nuevo archivo no necesariamente comienza siempre con 666, y los modos solicitados por la aplicación, ACL y las políticas del sistema de archivos también afectan el resultado. Para cambiar los permisos de un archivo existente, use chmod.
Preguntas frecuentes
¿Si ejecuto umask 022, los archivos existentes también se convertirán en 644?
No. Solo se aplica a las restricciones de permisos de los elementos creados después por esta shell y los procesos hijos.
Documentación oficial
Puede consultar el comportamiento exacto de las opciones y las diferencias según la implementación en la documentación oficial sobre umask.




