Creo que umask es algo que controla los permisos de archivos , pero no lo entiendo completamente.
Después de ejecutar umask 0644
en una terminal , no puedo leer los archivos que creo con el editor de texto de línea de comandos nano
. Noté que los permisos de ese archivo están establecidos en 0022
lugar de los predeterminados 0755
.
¿Cómo funciona umask? Pensé que sólo podía quitar el cada dígito en la máscara de usuario a partir de 0777
, 7 - 6 = 1
y 7 - 4 = 3
, por lo que espero que sean los permisos 0133
, pero al parecer, este no es el caso.
- ¿Qué es exactamente umask? Explícame como si fuera un "novato de Linux"
- ¿Cómo calculo con umask?
- ¿Cuáles son los casos de uso de umask?
permissions
umask
Lekensteyn
fuente
fuente
app_mode 666 rw- rw- rw-
umask 644 --0 -00 -00
file_mode 022 --- -w- -w-
Respuestas:
El umask actúa como un conjunto de permisos que las aplicaciones no pueden establecer en los archivos. Es una máscara de creación de modo de archivo para procesos y no se puede configurar para directorios en sí. La mayoría de las aplicaciones no crearían archivos con permisos de ejecución establecidos, por lo que tendrían un valor predeterminado de
666
, que luego es modificado por la umask.Como ha configurado la umask para eliminar los bits de lectura / escritura para el propietario y los bits de lectura para otros, un valor predeterminado, como
777
en las aplicaciones, daría lugar a los permisos del archivo133
. Esto significaría que usted (y otros) podrían ejecutar el archivo, y otros podrían escribir en él.Si desea que los archivos no sean leídos / escritos / ejecutados por nadie más que el propietario, debe usar una máscara de usuario
077
para desactivar esos permisos para el grupo y otros.Por el contrario, una máscara de u
000
hará que los directorios recién creados sean legibles, escribibles y descendibles para todos (los permisos serán777
). Tal umask es altamente inseguro y nunca debes configurarlo000
.La umask predeterminada en Ubuntu era lo
022
que significa que los archivos recién creados son legibles por todos, pero solo el propietario puede escribirlos:A partir de Ubuntu Oneiric (11.10), se relajó la umask predeterminada
002
, que amplía el acceso de escritura al grupo del propietario:Ver y modificar umask
Para ver su configuración actual de umask, abra una terminal y ejecute el comando:
Para cambiar la configuración de umask del shell actual a otra cosa, digamos 077, ejecute:
Para probar si esta configuración funciona o no, puede crear un nuevo archivo (los permisos de un archivo existente no se verán afectados) y mostrar información sobre el archivo, ejecute:
La configuración de umask es heredada por los procesos iniciados desde el mismo shell. Por ejemplo, inicie el editor de texto GEdit ejecutándolo
gedit
en la terminal y guarde un archivo usando gedit. Notará que el archivo recién creado se ve afectado por la misma configuración de umask que en el terminal.Caso de uso: sistema multiusuario
Si está en un sistema compartido por varios usuarios, es deseable que otros no puedan leer archivos en su directorio de inicio. Para eso, un umask es muy útil. Edite
~/.profile
y agregue una nueva línea con:Debe volver a iniciar sesión para que este cambio de umask
~/.profile
surta efecto. A continuación, debe cambiar los permisos de archivos existentes de los archivos en su directorio de inicio eliminando el bit de lectura, escritura y ejecución del mundo. Abra una terminal y ejecute:Si desea que esta configuración de umask se aplique a todos los usuarios del sistema, puede editar el archivo de perfil de todo el sistema en
/etc/profile
.fuente
777
significa que el grupo y otros podrán escribirle, mientras que077
significa que no pueden?000
, el permiso de archivo será777
. Entonces, con una máscara predeterminada de022
, ¿no deberían ser los permisos del archivo755
, es decir, correspondientes a-rwxr-xr-x
, no-rw-r--r--
?000
entonces no se eliminarán los permisos. a las aplicaciones les gustatouch
ynano
crean archivos por defecto666
para que el permiso de archivo permanezca,666
pero una máscara de022
eliminará los bits de escritura para el grupo y otros, por lo que666
se reduce a644
aka-rw-r--r--
Considerarmkdir
qué modo de creación predeterminado de777
con una máscara de u022
reducirá los permisos para755
Además de la buena discusión en la respuesta aceptada, vale la pena agregar algunos puntos más
umask
, con referencia a cómo se maneja en 12.04 y en adelante.Umask y pam_umask
La umask predeterminada ahora está dentro
/etc/login.defs
y no dentro/etc/profile
, como/etc/profile
dice la nota oficial en :Pam_umask
se explica brevemente a continuación, y se debe decir que el archivo predeterminado para que el usuario coloque su configuración personalizada de umask todavía está~/.profile
.Pam_umask
es uno de los muchos módulos PAM importantes que son cruciales en la operación de Ubuntu (ejecuteapropos '^pam_'
para encontrar las páginas de manual para los otros). En la página de manual parapam_umask
se observa queUna nota sobre la umask predeterminada
$HOME
Se pueden crear nuevas carpetasmkdir
con permisos predeterminados de 775 y archivos creados contouch
permisos predeterminados de 664, incluso cuando la umask predeterminada es 022. Esto parece, al principio, contradictorio, y vale la pena explicarlo.Si bien el umask predeterminado es 022 en Ubuntu, esta no es toda la historia, ya que hay una configuración
/etc/login.defs
que permite que el umask sea 002 para usuarios no root si se cumple una condición (consulte el extracto a continuación). En una instalación normal,/etc/login.defs
contiene la configuraciónUSERGROUPS_ENAB yes
. Esto es lo quePor lo tanto, verá lo siguiente con
stat
cuando se crea una nueva carpeta conmkdir
un solo sistema de usuario como el mío (uid y gid son lo mismo):Para obtener más información, consulte
man pam_umask
las páginas de manual de Ubuntu en línea .fuente
/etc/login.defs
es definitivamenteUSERGROUPS_ENAB yes
después de comprobarlo. La sintaxis de ese archivo es ligeramente inusual.Esto es bastante viejo, pero vale la pena mencionarlo. Para calcular la umask, a diferencia de los permisos del sistema de archivos. Las máscaras u octales se calculan a través del AND bit a bit del complemento unario del argumento utilizando NOT bit a bit. Las anotaciones octales son las siguientes:
Luego puede calcular para establecer umask premisiones adecuadas tales como:
Cálculo del permiso final para archivos
Simplemente puede restar la umask de los permisos base para determinar el permiso final para el archivo de la siguiente manera:
666
022
(666-022)
:644 (rw-r–r–)
Cálculo del permiso final para directorios
Simplemente puede restar la umask de los permisos base para determinar el permiso final para el directorio de la siguiente manera:
777
022
(777-022)
:755 (rwxr-xr-x)
fuente
077
cómo restarías666-077
en ese caso?Otros respondieron que han explicado muy bien el concepto de umasking y por qué es necesario. Permítanme agregar mis dos centavos y darle un ejemplo matemático sobre cómo se calculan realmente los permisos.
En primer lugar, "Máscara" no significa "restar", en el sentido aritmético: no hay préstamo o transporte involucrado, en segundo lugar,
umask
es una máscara; No es un número a restar.Tercero, la máscara apaga los bits de permiso. Si ya están apagados,
umask
no hace ningún cambio al permiso,Por ejemplo, suponga que tiene que desenmascarar
077
de los valores predeterminados del sistema para los archivos que es666
y los directorios que es777
.El comando que usarás es,
(desenmascarar el valor en binario
000 111 111
)Lo que hará esta máscara será desactivar cualquiera de los primeros seis LSB (bits menos significativos) si lo están
1
y no hará ningún cambio si alguno de ellos ya está apagado.Así es como se calcula el permiso final:
Observe cómo ambos
110
valores han cambiado a000
.Similar,
fuente
umask 177
(001 111 111), se apagarán los primeros 7 bits menos significativos si son1
result = file permission & (!umask)
Concepto basico:
Si eres como la mayoría de los humanos y no entiendes lo que significa "las máscaras octales se calculan a través del bit AND Y del complemento unario del argumento usando bitwise NOT" , aquí está mi explicación simple:
En primer lugar, piense en lo que es una "máscara". Una máscara bloquea algo. Piensa en cinta adhesiva. En este caso, umask es como una cinta de enmascarar para bloquear / deshabilitar los permisos al crear un nuevo archivo o directorio.
Los permisos predeterminados al crear un nuevo directorio son
octal 777 (111 111 111)
, y un nuevo archivo esoctal 666 (110 110 110)
. Configuramos la umask para bloquear / deshabilitar ciertos permisos.1
medios para bloquear / deshabilitar ese permiso (poner cinta de enmascarar sobre ese bit).0
permitirá que pase el permiso (sin cinta de enmascarar sobre ese bit).Por lo que una
octal 022 (000 010 010)
máscara significa desactivargroup write
yothers write
, y permitir que todos los demás permisos para pasar a través.Cálculo:
Aquí hay un ejemplo de cálculo para un nuevo archivo (permiso 666 predeterminado) con una máscara u 022:
Así es como terminas con el resultado de 644 cuando creas un nuevo archivo.
Manera más fácil:
Pero si los cálculos de máscara inversa solo lo confunden, hay una manera más fácil de usar la notación simbólica umask. Cuando utiliza este método, solo está especificando los bits de paso en lugar de los bits de máscara.
umask u=rwx,g=rx,o=rx
medios permiten pasar a través deuser rwx
,group rx
,other rx
. Lo que implica desactivargroup w
,others w
. Si ejecuta este comando, compruebeumask
, obtendrá022
.umask u=rwx,g=,o=
significa permitir pasar poruser rwx
. Lo que implica deshabilitar todo acceso paragroup
yothers
. Si ejecuta este comando, compruebeumask
, obtendrá077
.Cálculo de bonificación:
Si realmente quiere entender qué significa "las máscaras utales se calculan a través del bit AND Y del complemento unario del argumento usando bitwise NOT" , aquí hay algunas tablas lógicas que pueden ayudar a demostrar. Recuerde, un bit de máscara
1
significa deshabilitar,0
significa pasar.Si haces la tabla con
NOT(mask)
, ¡ahora es solo unaAND
tabla lógica simple !Entonces la fórmula es:
result = perm AND (NOT mask)
fuente