¿Para qué sirve el comando umask?

¿Para qué sirve el comando umask?

¿Para qué sirve realmente umaskel comando en *nix OS?
¿Cómo es su mecanismo de funcionamiento y utilidad? p.ej

$ umask 022

Muchas gracias antes

Respuesta1

umaskes un comando integrado de la mayoría de los shells que es solo una interfaz para la umask()llamada al sistema, y ​​encontrará su descripción en la documentación de su shell (tenga cuidado, man umaskpuede indicarle la documentación de la umask()llamada al sistema en su lugar o la umaskdocumentación incorporada de un shell aparte del tuyo).

La máscara de usuario es un atributo de un proceso (heredado de padres a hijos y conservado tras la ejecución del comando) que determina qué permisos se otorgan automáticamente a los archivos de forma predeterminada cuando se crean.

La umaskutilidad le permite configurar la máscara de usuario del proceso de shell para controlar los permisos de los archivos creados por cualquier comando ejecutado dentro de la sesión de shell.

De umasktodos los shells toman la máscara como un número octal, mientras que en algunos shells, incluidos todos los POSIX, también se puede especificar en forma simbólica como for chmod.

La máscara determina qué partes de los permisos deben serdespejadocuando se crea el archivo. Por ejemplo umask 777, donde 0777 es 511 o 0b111_111_111 provocaría que los archivos se crearan sin permiso, ya que los 9¹ bits de los permisos de archivos de Unix (3 ( rlectura, writo, ejecución x) parausuario, 3 paragrupo, 3 paraotro) se borraría.

La forma simbólica especifica qué bits debennoser despejado. Así umask 777sería umask u=,g=,o=.

Generalmente, desea que al menos la máscara de usuario incluya el wbit para ootros, ya que no desea que los archivos que cree se puedan escribir en todo el mundo ( umask 002o umask u=rwx,g=rwx,o=rx).

Es probable que también desee configurar el wbit para grupo al menos en sistemas donde el grupo principal del usuario no es personal (se comparte con otros usuarios): o .gumask 022umask u=rwx,g=rx,o=rx

A umask 077o umask u=rwx,g=,o=garantiza que todos los archivos que cree sean privados para usted (nadie más podrá acceder a ellos). A menudo se ve esto en scripts que crean archivos temporales, a veces en un subshell como en:

(umask 077; echo test > "$tmpfile")

Configurar umaskbits para el uservidor puede causar problemas, ya que puedes terminar creando archivos que ni siquiera tú puedes abrir.

Tenga en cuenta que la máscara de usuario aplicadaen la parte superiorde los permisos solicitados por las aplicaciones cuando ellas open()o creat()un archivo. Si lo hacen creat("file", 0666)mientras umaskes 022( u=rwx,g=rx,o=rx), los permisos terminarán siendo 0644( u=rw,g=r,o=r). Las aplicaciones aún pueden llamar fchmod()o chmod()después cambiar los permisos como quieran (y la umask no tiene ningún efecto allí).

umasksin argumentos informa la máscara de usuario actual en forma octal. umask -Sen algunas conchas lo informan en forma simbólica. umask -pingresa basho fishgenera código de shell que, una vez interpretado, establecería la misma máscara de usuario.

Esto se puede usar para restaurar la umask anterior después de haberla modificado:

previous_umask=$(umask)
umask 077
# create some private files
umask "$previous_umask"

¹ Técnicamente, hay 12 bits de permisos donde los 3 adicionales son bits especiales que se usan para diversos propósitos dependiendo del tipo de archivo y, a veces, se combinan con otros bits de permiso (como los bits setuid, setgid para ejecutables, tbits para directorios... .). En algunos sistemas, esos bits se ignoran cuando se solicitan en open()/ creat()y de todos modos cuando las aplicaciones los configuran (generalmente más bien chmod()después), es por una buena razón, por lo que generalmente no es útil incluirlos en umasky la umask()llamada del sistema los ignorará. de todos modos.

información relacionada