umask (Español)
La utilidad umask se utiliza para controlar la máscara del modo de creación de archivos, que determina el valor inicial de los bits de permisos para los archivos recién creados. El comportamiento de esta utilidad está estandarizado por POSIX y se describe en el Manual del programador POSIX. Debido a que umask afecta el entorno de ejecución actual del shell, generalmente se implementa como una orden integrada en el shell.
Significado de la máscara de modo
La máscara de modo contiene los bits de permiso que no deben establecerse en un archivo recién creado, por lo tanto, es la negación lógica de los bits de permiso establecidos en un archivo recién creado. Si algún bit de la máscara se establece en 1
, el permiso correspondiente para el archivo recién creado se desactivará. Por lo tanto, la máscara actúa como un filtro para eliminar los bits de permiso y ayuda a configurar el acceso predeterminado a los archivos.
El valor resultante para los bits de permiso que se establecerán en un archivo recién creado se calcula utilizando la adjunción lógica bit a bit, que se puede expresar en notación lógica:
R: (D & (~M))
Es decir, los permisos resultantes R
son el resultado de conjunción bit a bit de los permisos predeterminados D
y la negación bit a bit de la máscara del modo de creación de archivos M
.
- Linux no permite que se cree un archivo con permisos de ejecución, los permisos de creación predeterminados son
777
para directorios y solo666
para archivos. - En Linux, solo se utilizan los bits de permiso de archivo de la máscara; véase umask(2). Los bits "suid", "sgid" y "pegajoso" de la máscara se ignoran.
Por ejemplo, supongamos que la máscara del modo de creación de archivos es 027
. Aquí la representación bit a bit de cada dígito representa:
- representa los bits del permiso de usuario no establecido en un archivo recién creado
- representa los bits del permiso de grupo no establecido en un archivo recién creado
- representa los bits del permiso de otros no establecido en un archivo recién creado
Con la información proporcionada por la tabla a continuación, esto significa que para un archivo recién creado, por ejemplo, propiedad del usuario y del grupo Grupo1
, tiene todas las permisos (valor octal ) para el archivo recién creado, otros usuarios del grupo Grupo1
no tienen permisos de escritura (valor octal 5
) y cualquier otro el usuario no tiene ningún permiso (valor octal ) para el archivo recién creado. Entonces, con la máscara 027
tomada para este ejemplo, los archivos se crearán con permisos .
Octal | Binary | Significado |
---|---|---|
sin permisos | ||
1 | solo ejecución | |
solo escritura | ||
escritura y ejecución | ||
solo lectura | ||
5 | 101 | lectura y ejecución |
110 | lectura y escritura | |
lectura, escritura y ejecución |
Mostrar el valor de la máscara actual
Para mostrar la máscara actual, simplemente invoque sin especificar ningún argumento. El estilo de salida predeterminado depende de la implementación, pero generalmente es octal:
Cuando se utiliza la opción , estandarizada por POSIX, la máscara se mostrará con notación simbólica. Sin embargo, el valor de notación simbólica siempre será el complemento lógico del valor octal, es decir, los bits de permiso que se establecerán en el archivo recién creado:
Establecer el valor de la máscara
Puede establecer el valor de umask mediante la orden umask. La cadena que especifica la máscara de modo sigue las mismas reglas sintácticas que el argumento de modo de chmod (véase Manual del programador POSIX para más detalles).
El valor de umask de todo el sistema se puede establecer en o en los archivos de configuración predeterminados del shell, por ejemplo /etc/bash.bashrc
. La mayoría de las distribuciones Linux, incluido Arch, establecen un valor predeterminado de umask (véase /etc/profile). También se puede configurar umask con pero puede ser anulado por o similar.
Si necesita establecer un valor diferente, puede editar directamente dicho archivo, afectando así a todos los usuarios, o llamar a desde el archivo de configuración de usuario de su shell, por ejemplo para cambiar solo su umask, sin embargo, estos cambios solo tendrán efecto después del próximo inicio de sesión. Para cambiar su umask solo durante su sesión actual, simplemente ejecute y escriba el valor deseado. Por ejemplo, ejecutar le dará permisos de lectura y escritura para archivos nuevos, y permisos de lectura, escritura y ejecución para carpetas nuevas.
Véase también
- Manual del programador POSIX:
- umask (también disponible como )
- chmod (descripción extendida) (también disponible como chmod(1p))
- 027 umask: un compromiso entre seguridad y simplicidad