En los sistemas operativos Linux y Unix, todos los archivos nuevos se crean con un conjunto predeterminado de permisos. La umask
La utilidad le permite ver o configurar la máscara de creación del modo de archivo, que determina los bits de permisos para archivos o directorios recién creados.
Lo utilizan mkdir, touch, tee y otros comandos que crean nuevos archivos y directorios.
Permisos de Linux #
Antes de continuar, expliquemos brevemente el modelo de permisos de Linux.
En Linux, cada archivo está asociado con un propietario y un grupo y se le asignan derechos de acceso de permisos para tres clases diferentes de usuarios:
- El propietario del archivo.
- Los miembros del grupo.
- Todos los demás.
Hay tres tipos de permisos que se aplican a cada clase:
- El permiso de lectura.
- El permiso de escritura.
- El permiso de ejecución.
Este concepto le permite especificar qué usuarios pueden leer el archivo, escribir en el archivo o ejecutar el archivo.
Para ver los permisos de archivo, use el ls
comando:
ls -l dirname
drwxr-xr-x 12 linuxize users 4.0K Apr 8 20:51 dirname
|[-][-][-] [------] [---]
| | | | | |
| | | | | +-----------> Group
| | | | +-------------------> Owner
| | | +----------------------------> Others Permissions
| | +-------------------------------> Group Permissions
| +----------------------------------> Owner Permissions
+------------------------------------> File Type
El primer carácter representa el tipo de archivo que puede ser un archivo normal (-
), un directorio (d
), un enlace simbólico (l
), o cualquier otro tipo especial de archivo.
Los siguientes nueve caracteres representan los permisos, tres conjuntos de tres caracteres cada uno. Los primeros conjuntos muestran los permisos del propietario, el segundo grupo los permisos y el último conjunto muestra los permisos de todos los demás.
Carácter r
con un valor octal de 4
significa lectura, w
con un valor octal de 2
para escritura, x
con un valor octal de 1
para permiso de ejecución, y (-
) con un valor octal de 0
sin permisos.
También hay otros tres tipos de permisos de archivos especiales:setuid
, setgid,
y Sticky Bit
.
En el ejemplo anterior (rwxr-xr-x
) significa que el propietario tiene permisos de lectura, escritura y ejecución (rwx
), el grupo y otros tienen permisos de lectura y ejecución.
Si representamos los permisos del archivo usando una notación numérica, llegaremos al número 755
:
- Propietario:
rwx
=4+2+1 = 7
- Grupo:
r-x
=4+0+1 = 5
- Otro:
r-x
=4+0+1 = 5
Cuando se representan en notación numérica, los permisos pueden tener tres o cuatro dígitos octales (0-7). El primer dígito representa los permisos especiales y, si se omite, significa que no se han establecido permisos especiales en el archivo. En nuestro ejemplo 755
es lo mismo que 0755
. El primer dígito puede ser una combinación de 4
para setuid
, 2
para setgid
y 1
para Sticky Bit
.
Los permisos de archivo se pueden cambiar usando chmod
comando y propiedad usando el chown
comando.
Comprensión de umask #
De forma predeterminada, en los sistemas Linux, los permisos de creación predeterminados son 666
para archivos, que otorga permiso de lectura y escritura a usuarios, grupos y otros, y a 777
para directorios, lo que significa permiso de lectura, escritura y ejecución para usuarios, grupos y otros. Linux no permite que se cree un archivo con permisos de ejecución.
Los permisos de creación predeterminados se pueden modificar usando umask
utilidad.
umask
afecta solo al entorno de shell actual. En la mayoría de las distribuciones de Linux, el valor predeterminado de umask para todo el sistema se establece en pam_umask.so
o /etc/profile
archivo.
Si desea especificar un valor diferente por usuario, edite los archivos de configuración de shell del usuario, como ~/.bashrc
o ~/.zshrc
. También puede cambiar la sesión actual umask
valor ejecutando umask
seguido del valor deseado.
Para ver el valor de la máscara actual, simplemente escriba umask
sin argumentos:
umask
La salida incluirá el
022
La umask
el valor contiene los bits de permiso que NO establecerse en los archivos y directorios recién creados.
Como ya hemos mencionado, los permisos de creación de archivos por defecto son 666
y para directorios 777
. Para calcular los bits de permiso de los nuevos archivos, reste el valor de umask del valor predeterminado.
Por ejemplo, para calcular cómo umask 022
afectará a los archivos y directorios recién creados, utilice:
- Archivos:
666 - 022 = 644
. El propietario puede leer y modificar los archivos. El grupo y otros solo pueden leer los archivos. - Directorios:
777 - 022 = 755
.El propietario puedecd
en el directorio y enumere, lea, modifique, cree o elimine los archivos en el directorio. El grupo y otros puedencd
en el directorio y enumere y lea los archivos.
También puede mostrar el valor de la máscara en notación simbólica usando -S
opción:
umask -S
u=rwx,g=rx,o=rx
A diferencia de la notación numérica, el valor de la notación simbólica contiene los bits de permiso que se establecerán en los archivos y directorios recién creados.
Configuración del valor de la máscara #
La máscara de creación de archivos se puede establecer mediante notación octal o simbólica. Para hacer que los cambios sean permanentes, configure el nuevo umask
valor en un archivo de configuración global como /etc/profile
archivo que afectará a todos los usuarios o en los archivos de configuración de shell de un usuario, como ~/.profile
, ~/.bashrc
o ~/.zshrc
, que afectará únicamente al usuario. Los archivos de usuario tienen prioridad sobre los archivos globales.
Antes de realizar cambios en la umask
valor, asegúrese de que el nuevo valor no represente un riesgo potencial para la seguridad. Valores menos restrictivos que 022
debe usarse con mucha precaución. Por ejemplo, umask 000
significa que cualquiera tiene permisos de lectura, escritura y ejecución en todos los archivos recién creados.
Digamos que queremos establecer permisos más restrictivos para los archivos y directorios recién creados para que otros no puedan cd
a los directorios y leer archivos. Los permisos que queremos son 750
para directorios y 640
para archivos.
Para calcular la umask
valor, simplemente reste los permisos deseados del predeterminado:
Valor de máscara U:777-750 = 027
La umask
deseada el valor representado en notación numérica es 027
.
Para establecer permanentemente el nuevo valor en todo el sistema, abra el /etc/profile
archivo con su editor de texto:
sudo nano /etc/profile
y cambie o agregue la siguiente línea al principio del archivo:
/etc/profileumask 027
Para que los cambios surtan efecto, ejecute el siguiente source
Comando o cerrar sesión e iniciar sesión:
source /etc/profile
Para verificar la nueva configuración, crearemos un nuevo archivo y directorio usando mkdir
y touch
:
mkdir newdir
touch newfile
Si verifica los permisos usando el ls
comando, notará que el nuevo archivo tiene 640
y el nuevo directorio 750
permisos, como queríamos:
drwxr-x--- 2 linuxize users 4096 Jul 4 18:14 newdir
-rw-r----- 1 linuxize users 0 Jul 4 18:14 newfile
Otra forma de configurar la máscara de creación de archivos es mediante la notación simbólica. Por ejemplo umask u=rwx,g=rx,o=
es lo mismo que umask 027
.
Conclusión #
En esta guía, hemos explicado los permisos de Linux y cómo usar el umask
Comando para configurar los bits de permisos para archivos o directorios recién creados.
Para obtener más información, escriba man umask
en tu terminal.
Si tiene alguna pregunta, deje un comentario a continuación.