Umask para leigos

Artigo visa a orientar novos usuários na correta utilização da Umask, realizando o cálculo binário das permissões. Sendo assim, minimizando um possível erro ao realizar este cálculo e aplica-lo a um ambiente de produção.

[ Hits: 41.938 ]

Por: Fabio Maran em 26/05/2014 | Blog: http://movimentolivre.zip.net


Funcionamento / Cálculo



Entendendo seu funcionamento

Após entender a diferença entre diretório e arquivo, vamos verificar qual a Umask está definida em nosso sistema, veja um exemplo:
Linux: Umask para leigos
Sendo assim, vamos verificar quais as permissões esta Umask atribuirá aos diretórios e arquivos criados no sistema.

Realizei um acesso até a pasta Documents/

E criei um diretório e um arquivo, logo em seguida, efetuei um comando para listar as permissões e os arquivos, comando equivalente ao ls -l, no caso da distribuição utilizada para realização do artigo.
Linux: Umask para leigos
Veja, para o diretório, esta Umask definiu as permissões:
  • rwx :: para o dono do diretório.
  • r-x :: para o grupo do diretório.
  • r-x :: para outros.

Já para os arquivos, houve uma diferença. Veja:
  • -rw :: para o dono do arquivo.
  • r-- :: para o grupo do arquivo.
  • r-- :: para outros.

Nesta parte, já fica mais fácil compreender o por quê. O mesmo foi criado diferente do diretório. Eu já vi muitos artigos, dicas e tutorias, ensinando cálculo de Umask, tanto pela Internet, como em livros.

Porém, o método de regras gerais, regras de exceção ou AND or NOT, creio ser muito confuso para quem está iniciando no mundo do terminal.

Neste artigo, você não irá se basear em regras e sim, aprender o método de cálculo binário, transforma-lo em octal e saber quais letras estes geram, ou seja, aprender para não precisar de regras ou macetes, além de ser mais fácil.

Para isto, veja esta imagem:
Linux: Umask para leigos
Tomaremos como base para calcular a Umask, o campo binário desta imagem.

A pouco, eu abordei que o Linux trata as permissões máximas para criação de um diretório, diferente de um arquivo. Os arquivos quando são criados, não herdam a permissão de execução.

Sendo assim, foi retirado este atributo do dono, grupo e outros. Isso será muito válido, quando formos executar o cálculo da Umask.

Vejamos como o Linux chegou a este resultado, as permissões máximas para criação de um diretório, são:

777 (rwx/rwx/rwx) (111-111-111)

Sabendo que a Umask definida é 0022 (o primeiro número destina-se às permissões especiais como SUID, SGUID e Stick), não abordarei este assunto no artigo.

Sendo assim, interprete como 022:

022 (---/-w-/-w-) (000-010-010)

O Linux vai subtrair a máscara da permissão total de criação, veja:
  • 777 (111-111-111) :: Permissão máxima para criação de Diretório.
  • 022 (000-010-010) :: Umask Desejada.
  • 755 (111-101-101) :: Permissão para diretórios.
  • 111 (001-001-001) :: Subtrair a permissão de execução.
  • 644 (110-100-100) :: Permissão para arquivos.

Veja como é simples, é só retirar a permissão de execução em todos os grupos (dono, grupo e outros), para obter a permissão padrão para criação de arquivos.

Como eu sei que o Linux não irá inserir as permissões de execução nos arquivos, eu subtraio esta permissão.

Agora, vamos ver se tudo isso que eu falei condiz com a realidade.

Calculando a Umask

Tendo como base a permissão máxima de criação de diretórios e a Umask desejada, vamos realizar algumas operações.

Sugiro que você realize os testes no seu diretório /tmp, para que tudo seja apagado no próximo boot do sistema.

cd /tmp

Agora, crie um diretório para começar a brincadeira, no meu caso, criei o diretório UMASK.

mkdir UMASK

Eu vou definir que todos os diretórios criados abaixo de UMASK, sejam criados com as seguintes permissões:
  • DONO = leitura, gravação e execução.
  • GRUPO = leitura e execução.
  • OUTROS = Nenhuma permissão.

Vejamos como calcular esta Umask. Eu vou subtrair as permissões que eu não desejo que os grupos tenham da permissão total que o Linux assume, sendo assim, eu terei minha permissão final. E o número da Umask, será este número subtraído da permissão total.

Veja:
  • 777 111-111-111 :: Permissão máxima para criação de diretórios.
  • 027 000-010-111 :: Umask desejada.
  • 750 111-101-000 :: Permissão dos diretórios.
  • 110 001-001-000 :: Subtrair a permissão de execução.
  • 640 110-100-000 :: Permissão de arquivos.

(Neste caso, não subtrai do grupo OUTROS, pois o mesmo já estava sem permissões, não sendo necessário retirar algo de onde não existe. :)

Veja o exemplo:
Linux: Umask para leigos
Vamos dizer que eu gostaria de definir a Umask para esta pasta como 007. Vejamos como ficariam as permissões para diretórios e arquivos:
  • 777 (111-111-111)
  • 007 (000-000-111)
  • 770 (111-111-000) :: Permissão para diretórios.
  • 110 (001-001-000) :: Retirando a permissão de execução.
  • 660 (110-110-000) :: Permissão para arquivos.

Neste caso, também não foi retirada a permissão de outros, pois os mesmos já não possuíam permissão alguma.

Calculando desta forma, utilizando a parte binária e retirando a permissão de execução da permissão obtida para diretórios, conseguimos facilmente a permissão para arquivos, sem utilizar regra alguma.
Linux: Umask para leigos
Ou seja, caso você precise implementar, ou esteja estudando para LPIC 101, isto ajudará bastante na hora de realizar os cálculos e não vacilar em algo relativamente simples, mas um pouco difícil de ser compreendido.


Obrigado a todos,
Dúvidas, criticas ou sugestões, comentem. :)

Página anterior    

Páginas do artigo
   1. Introdução
   2. Funcionamento / Cálculo
Outros artigos deste autor

Leia, grave e execute!

Desktop Debian/Ubuntu

Debian e o Backports

Samba: Integração com ClamAV e outras coisas úteis

DansGuardian: Filtrando o acesso a Web

Leitura recomendada

UNR (Ubuntu Netbook Remix) 9.04 no Acer Aspire One (AA1)

Redimencionando SWAP sem reinstalar o Linux

Boot gráfico no ArchLinux

ARM, utilização de snapshot de pacotes no Arch Linux

NGinx - Otimizando Recursos Externos Automaticamente

  
Comentários
[1] Comentário enviado por mcnd2 em 26/05/2014 - 22:53h

Muito bom man.

Com esse, aprendi mais sobre permissões em forma decimal que eu não entendia direito mais agora clareou.

...


[2] Comentário enviado por removido em 27/05/2014 - 00:46h

De fato! Excelente artigo!

Agora entendo um pouco mais sobre a segurança do Linux.
Vejam que somente o usuário pode corromper o sistema.

[3] Comentário enviado por maran em 27/05/2014 - 15:56h

Obrigado pelos comentários.

@izaias.

Exatamente meu caro, a umask é só uma de uma série de ferramentas disponíveis no Linux, para facilitar a administração e evitar erros.
Uma outra ferramenta interessante é o lsattr onde mudamos os atributos de arquivos e diretórios, um exemplo interessante é a possibilidade de transformar um arquivo em algo imutável, onde nem mesmo o root conseguiria remove-lo. Importante no caso de arquivos fundamentais, para servidores, arquivos de configuração de serviços, onde não se pode ocorrer erro nem de adm's.
É isso ai, : )

[4] Comentário enviado por removido em 27/05/2014 - 16:13h

Ok, Maran.
Se houver algo mais sobre lsattr, exponha pra nós em outro (ótimo) trabalho como esse.

Obrigado pelo esclarecimento.

[5] Comentário enviado por rsilveiragomes em 28/05/2014 - 01:12h

legal o artigo cara :)

Deixou o assunto bem fácil de entender, parabéns !

[6] Comentário enviado por maran em 28/05/2014 - 15:57h

Valeu Rafael, obrigado pelo comentário

[7] Comentário enviado por MAPOGOS em 28/05/2014 - 22:41h

Então
Para os arquivos que assume outro tipo de permissão média para criação de um novo arquivo, é:

-> 555 (r-r-r-) (100-100-100) ?
Obrigado.


[8] Comentário enviado por maran em 29/05/2014 - 16:59h


[7] Comentário enviado por TecDogged em 28/05/2014 - 22:41h:

Então
Para os arquivos que assume outro tipo de permissão média para criação de um novo arquivo, é:

-> 555 (r-r-r-) (100-100-100) ?
Obrigado.



Não entendi sua pergunta, "para os arquivos que assume outro tipo de permissão média"

[9] Comentário enviado por striker_rafael em 04/06/2014 - 15:34h

Parabens pelo artigo!
Pra mim, que nao tinha nem nocao de umask, ajudou bastante!
Obrigado!

[10] Comentário enviado por vitinho217 em 09/06/2014 - 10:15h

Muito bom cara, antes sabia usar o chmod com octal e me achava o cara ! Vendo a ultilização do UMASK vejo que tenho muito que aprender.
Vou adicionar aos favoritos, um abraço !

[11] Comentário enviado por maran em 09/06/2014 - 15:30h

Fala ae vitinho, o Linux é assim mesmo, sempre que achamos que já estamos bom, tem algo ainda que desconhecemos.
Obrigado pelo comentário.


[10] Comentário enviado por vitinho217 em 09/06/2014 - 10:15h:

Muito bom cara, antes sabia usar o chmod com octal e me achava o cara ! Vendo a ultilização do UMASK vejo que tenho muito que aprender.
Vou adicionar aos favoritos, um abraço !




Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts