O que é Umask e como utilizá-lo eficazmente

Tempo de leitura: 5 minutos

O que é Umask?

Umask, ou o modo de criação de ficheiros pelo utilizador, é um comando Linux que é utilizado para atribuir os conjuntos de permissões de ficheiros padrão para pastas e ficheiros recentemente criados. O termo máscara refere-se ao agrupamento dos bits de permissão, cada um dos quais define como a sua permissão correspondente é definida para ficheiros recém-criados. Os bits na máscara podem ser alterados através da invocação do comando umask.

Ao utilizar o termo Umask, estamos a referir-nos a um dos dois significados seguintes:

  • A máscara do modo de criação de ficheiros do utilizador que é utilizada para configurar as permissões padrão para ficheiros e directórios recentemente criados
  • O comando “umask” que é utilizado para definir o valor umask

Como provavelmente já sabe, todos os sistemas operacionais baseados em Unix têm um conjunto de propriedades que são utilizadas para definir quem está autorizado a ler, escrever, ou executar ficheiros ou directórios específicos. Existem três categorias chamadas “classes de permissões” às quais estas permissões se aplicam, e são anotadas da seguinte forma.

  • User: O Utilizador, por defeito, é o proprietário ou criador de um ficheiro ou pasta. A propriedade do novo ficheiro é por defeito deste utilizador.
  • Grupo: Um Grupo é um conjunto de utilizadores que partilham o mesmo nível de acesso ou permissões a um ficheiro ou pasta.
  • Outro: O Outro grupo é definido como qualquer utilizador não incluído nas duas categorias anteriores. Estes utilizadores não criaram um ficheiro ou pasta, nem pertencem a um grupo de utilizadores específico. Este grupo inclui todas as pessoas não identificadas como utilizador ou como fazendo parte de um grupo de utilizadores. Quando definimos o nível de permissão de um ficheiro ou pasta para Outro, ele dá acesso ao nível de permissão a qualquer pessoa que aceda ao ficheiro ou pasta.

Então, o que acontece quando um utilizador cria novos ficheiros e directórios? O sistema atribui automaticamente as seguintes permissões a um ficheiro se utilizar o comando touch.

Se criarmos um directório, atribui-lhe as seguintes permissões,

A sintaxe do comando Umask

A entrada completa da página manpage para umask é a seguinte

umask The user file-creation mask is set to mode. If mode begins with a digit, it is interpreted as an octal number; otherwise it is interpreted as a symbolic mode mask similar to that accepted by chmod(1). If mode is omitted, the current value of the mask is printed. The -S option causes the mask to be printed in symbolic form; the default output is an octal number. If the -p option is supplied, and mode is omitted, the output is in a form that may be reused as input. The return status is 0 if the mode was successfully changed or if no mode argument was supplied, and false otherwise.

Para ver o valor actual de umaask, usamos o comando umask. A execução do comando umask por si só fornece as permissões padrão que são atribuídas quando um ficheiro ou pasta é criado.

# umask0022#

Para alterar estes valores, utilizaremos o seguinte comando.

# umask #### umask 022

Os símbolos ### no primeiro comando são utilizados em vez de um número octal real.

Below, podemos ver os valores traduzidos do octal e como estão relacionados.

Número Permission
4 read
2 write
1 execute
Ler Escrever Executar Total Value Symbolic Equivalent:
0 0 0 0
0 0 1 1 x
0 2 0 2 w
0 2 1 3 wx
4 0 0 4 r
4 0 1 5 rx
4 2 0 6 rw
4 2 1 7 rwx

So, quando executamos um comando ls, os valores octal ou simbólico das permissões são mostrados no início da saída.

# lsdrwxr-xr-x 2 root root 4096 Apr 21 12:54 test/-rw-r--r-- 1 root root 0 Apr 21 12:53 test.txt

As permissões definidas para o directório de teste são 755 ou ‘rwx’ ‘r-x’ ‘r-x’ ‘r-x’.
As permissões definidas para o ficheiro test.txt são 644 ou ‘rw -‘ ‘r – – -‘ ‘r – – -‘ ‘r – -‘.
Um traço significa um valor 0.

Cabeçalhos simbólicos

--- no permission--x execute-w- write-wx write and executer-- readr-x read and executerw- read and writerwx read, write and execute

Cabeçalhos numéricos

Como funciona umask

O comando umask mascara os níveis de permissão qualificando-os com um certo valor. Para explicar melhor como é aplicado o valor umask, ilustraremos com um exemplo. Digamos que queremos definir as permissões padrão para todos os novos ficheiros ou pastas para 644 e 755. Usaríamos então o seguinte comando.

# umask 022

O número “2” de permissões (permissão de escrita) será “filtrado” a partir das permissões padrão do sistema de 666 e 777 (daí o nome “máscara”.) A partir de agora, o sistema atribuirá as permissões padrão de 644 e 755 em novos ficheiros e directórios. Simplificando, para calcular as permissões para um novo ficheiro ou directório, basta subtrair o valor umask do valor por defeito, assim.

  • 666 – 022 = 644
  • 777 – 022 = 755

Valor octal: Permissão

  • 0 : ler, escrever e executar
  • 1 : ler e escrever
  • 2 : read and execute
  • 3 : read only
  • 4 : write and execute
  • 5 : write only
  • 6 : execute only
  • 7 : no permissions

Podemos usar a informação acima para calcular as nossas permissões de ficheiro. Por exemplo, se a nossa umask estiver definida para 077, a permissão pode ser calculada da seguinte forma:

Bit Target at Permissões de arquivo
0 Proprietário read, escrever e executar
7 Grupo Sem permissões
7 World Sem permissões

0 : read, write and execute
7 : no permissions
7 : no permissions

Umask of 000 will make newly created directories readable, writable and executable by everyone (the permissions will be 777).

Umask Configuration Location

Na maioria das distribuições Linux, o valor de umaask pode ser encontrado e configurado nos seguintes locais:

  • /etc/profile – é aqui que são armazenadas as variáveis padrão de todo o sistema
  • /etc/bash.bashrc – aqui é onde são armazenados os ficheiros de configuração padrão da shell

Símbolos de máscara

Como referido na página umask man acima, podemos usar símbolos específicos para especificar os valores de permissão que queremos definir. Para pré-visualizar o valor de umaask actualmente definido nos símbolos, usamos o seguinte comando:

umask -S

Para o alterar, podemos usar o comando em que as letras “u,” “g,” e “o” representam o utilizador, grupo, e outro ou mundo, como se mostra abaixo.

umask u=$, g=$, o=$

Quando as permissões de configuração são assim, complementamos cada “$” com o(s) símbolo(s) de permissão desejado(s). O sinal igual “=” não é o único operador à nossa disposição ao definir umask com valores simbólicos. Também podemos utilizar operadores mais “+” e menos “-“.

  • O símbolo = permite que as permissões sejam activadas, proibindo permissões não especificadas
  • O símbolo + permite que as permissões sejam activadas, ignorando permissões não especificadas
  • O símbolo – proíbe que as permissões sejam activadas, ignorando permissões não especificadas
Nota:
Usar espaços após as vírgulas não funcionará, e a bash exibirá a mensagem de erro “operador de modo simbólico inválido”.

Existe um símbolo adicional que pode ser utilizado quando queremos definir a mesma permissão para todas as classes de permissão de uma só vez (utilizador, grupo, e outros), e isto é:

umask a=

Conclusion

Agora que compreendemos melhor a função da máscara de criação do modo de ficheiro do utilizador, podemos pô-la em bom uso. Não só nos poupa tempo precioso e melhora a segurança, como também nos proporciona melhores capacidades de gestão de permissões.

Ptamos a começar hoje!

Tem ainda perguntas sobre como utilizar a máscara umask? Ligue para 800.580.4985, ou abra um chat ou bilhete connosco para falar com uma das nossas Equipas de Soluções ou com um Conselheiro de Alojamento experiente hoje!

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *