# 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 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 | 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:
enquanto que
No bash:
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