Umask

umask (abreviado de user mask (máscara de usuário) é um comando e uma função em ambientes POSIX que determinam as permissões padrão para novos arquivos e diretórios criados.

Sistemas Unix modernos permitem que o umask seja especificado em dois possíveis modos:

  • Uma permissão padrão, também conhecido como Umask Simbólico. E.g. u=rwx,g=rwx,o=
  • Um número octal o qual controla quais permissões serão retiradas de novos arquivos criados, e.g. 007.

Em ambos os casos, lembre-se que a maioria dos sistemas Unix não permite que novos arquivos sejam criados com permissão de execução ativada, não interessando qual umask esteja configurada.

Umask simbólico

Uma umask ajustada para u=rwx,g=rwx,o= resultará em novos arquivos tendo as permissões rw-rw---- (leia a frase acima), e novos diretórios com permissões rwxrwx---.

Exemplo sobre umask simbólico

No bash:

 $ umask u=rwx,g=rwx,o=
 $ mkdir foo
 $ touch bar
 $ ls -l
 drwxrwx--- 2 dave dave 512 Sep  1 20:59 foo
 -rw-rw---- 1 dave dave   0 Sep  1 20:59 bar

Umask octal

Umasks octais são calculadas via bitwise AND do complemento unitário do argumento (usando bitwise NOT) e o modo de acesso total.

As modificações apenas terão efeito durante a sessão corrente.

O modo de acesso total é 666 para arquivos, e 777 no caso de diretórios. A maioria dos Unix shells proporciona um comando umask que afeta a todos os processos-filhos executados a partir deste shel. umask usa 777 por padrão tanto para arquivos quanto para diretórios. Se quiser máscaras diferentes para arquivos e diretórios, você deve usar fmask ou dmask.

Um valor comumente usado é 022 (proibindo a permissão de escrita para o grupo e outros), o que assegura que novos arquivos sejam apagados apenas pelo proprietário (i.e. o usuário que o criou). Um outro valor comum é 002, que mantém a permissão de escrita nos arquivos para o grupo do usuário. Isso pode ser usado para arquivos compartilhados com vários usuários trabalhando com os mesmos arquivos.

Tabela de permissões

  • 0 – ler, escrever e executar
  • 1 – ler e escrever
  • 2 – ler e executar
  • 3 – somente ler
  • 4 – escrever e executar
  • 5 – somente escrever
  • 6 – somente executar
  • 7 – sem permissões
Tabela Umask
Arquivo
Umask Binário Texto Diretório
0 r-x rw- rwx
1 r-- rw- rw-
2 r-x r-- r-x
3 r-- r-- r--
4 --x -w- -wx
5 --- -w- -w-
6 --x --- --x
7 --- --- ---

Note que o umask faz o inverso do chmod, enquanto por exemplo o chmod com a opção 1 adiciona permissão de execução, o umask faz o inverso, retira tal permissão, logo só necessita aprender um e inverter em seu uso, observando é lógico as nuances entre umask e chmod.

Exemplos sobre umask octal

Assumindo que o umask tenha o valor 174, qualquer novo arquivo será criado com a permissão 602 e qualquer novo diretório com a permissão 603 pois:

6668 AND NOT(1748) = 6028

enquanto que

7778 AND NOT(1748) = 6038
7778 = (111 111 111)2
1748 = (001 111 100)2
NOT(001 111 100)2 = (110 000 011)2
(111 111 111)2 AND (110 000 011)2 = (110 000 011)2
     7778           NOT (174)8          (603)8

No bash:

 $ umask 0174
 $ mkdir foo
 $ touch bar
 $ ls -l
 drw-----wx 2 dave dave 512 Sep  1 20:59 foo
 -rw-----w- 1 dave dave   0 Sep  1 20:59 bar

Usando a máscara acima, octal 1 proíbe o bit de execução de ser usado, octal 7 proíbe todos os bits do grupo de serem ativados, e octal 4 proíbe o bit de leitura para outros.

Dicas

  • Esteja atento ao fato de que o umask utilizado aplica-se somente ao processo corrente e aos processos-filhos que ele criar.
  • Se estiver usando (S)FTP você deve reiniciar o daemon (S)FTP após configurar uma umask. Além disso, você deve reconectar ao servidor a fim de que a nova umask tenha efeito.

Veja também

  • chmod

Referências

Ligações externas

  • Manpage of umask(2) from OpenBSD
  • "Setting Permissions" from "The GNU C Library Reference Manual"
  • "UMask details"
  • Seção do Guia Foca Linux sobre Umask

( Este artigo foi traduzido do artigo de mesmo título da página do Wikipedia em inglês. 10 de maio de 2009)

  • v
  • d
  • e
Arquivos
  • cat
  • cd
    • popd
    • pushd
  • chattr
  • chmod
  • chown
  • chflags
  • chgrp
  • cksum
  • cp
  • cmp
  • curl
  • dd
  • du
  • df
  • file
  • fsck
  • less
  • ln
  • ls
  • lsof
  • mkdir
  • more
  • mv
  • pax
  • pwd
  • rm
  • rmdir
  • split
  • size
  • tee
  • touch
  • tree
  • type
  • umask
Processos e tarefas
  • anacron
  • at
  • bg
  • chroot
  • crontab
  • jobs
  • kill
  • killall
  • nice
  • fg
  • pgrep
  • pidof
  • pkill
  • ps
  • pstree
  • time
  • top
  • wait
Ambiente e usuários
  • clear
  • env
  • exit
  • finger
  • history
  • id
  • locale
  • logname
  • mesg
  • passwd
  • su
  • sudo
  • talk
  • tput
  • ulimit
  • uname
  • umask
  • uptime
  • w
  • wall
  • who
  • whoami
  • write
Processamento de texto
  • awk
  • banner
  • basename
  • comm
  • csplit
  • cut
  • diff
  • dirname
  • disown
  • ed
  • ex
  • fmt
  • fold
  • head
  • iconv
  • join
  • less
  • more
  • nl
  • paste
  • sed
  • sort
  • spell
  • strings
  • tail
  • tr
  • uniq
  • vi
  • wc
  • xargs
Shell
  • alias
  • bind
  • break
  • compgen
  • complete
  • continue
  • echo
  • expr
  • history
  • printf
  • read
  • sh
  • shopt
  • source
  • test
  • true
  • false
  • unset
  • wait
  • yes
Redes e comunicação
  • dig
  • ifconfig
  • inetd
  • netstat
  • nslookup
  • ping
  • rlogin
  • route
  • ssh
  • traceroute
Busca
  • find
  • grep
  • strings
  • locate
  • whatis
  • whereis
Documentação
  • apropos
  • help
  • man
Miscelâneas
  • bc
  • dc
  • cal
  • date
  • lp
  • lpr
  • od
Comandos geralmente implementados no interpretador.
Comando geralmente implementados, tanto como executáveis, como quanto no interpretador.