Permissões x umask

Como disse no post anterior, umask é a permissão padrão para criação de arquivos e diretórios; isto é… quando criamos um arquivo ou um diretório no sistema, estes já vem com uma permissão padrão.

Todo usuário tem um valor de umask, que define a permissão padrão para criação de arquivos e diretórios. O comando para visualizar o valor da umask, é o umask; é um comando interno do bash🙂 .

A umask é guardada em nos arquivos profiles; no /etc/profile e arquivo .bash_profile ou .profile que fica no home de cada usuário do sistema. Cada usuário pode ter o seu padrão, para isso, basta alterar o valor no arquivo .bash_profile; caso o arquivo não exista, podemos criar!

Por exemplo, vamos no terminal onde a trinity está logada e vejamos qual o valor da umask dela:

$ umask
0022

Bem, agora a questão é: sei o valor da umask… mas que permissão é essa? Para descobrir, vamos ter que fazer uma continha de padeiro.

Sei que a permissão total no sistema é 777 e o valor da umask é 022. Simplesmente eu subtraio o valor da umask do valor da permissão total:

777 – 022 = 755

Descobrimos então, que a permissão padrão para uma umask de valor 022 é 755!

Agora um detalhe! Quando falamos em permissão total, estamos falando de rwx, que em um diretório, significa:

r – Posso listar o conteúdo
w – Posso criar arquivos
x – Posso entrar no diretório

Já para arquivos, estamos falando que:

r – Posso ler o conteúdo
w – Posso alterar o conteúdo
x – Posso executar esse arquivo

Só que o detalhe é: o sistema por padrão não adota que todo arquivo criado será um executável… então a opção de x, isto é, de execução não vem setada por padrão, senão terei vários arquivos executáveis que na verdade são apenas arquivos de texto.

Assim, no caso da permissão padrão para criação de arquivos, sempre vai ser retirado o x… e temos que fazer a continha de padeiro novamente, para descobrir qual a permissão padrão para criação de arquivos, ja que acima, a permissão padrão é para diretórios!

Vejam a tabela:

Permissao para arquivos

Então, resumindo, subtraímos a permissão x que tem o valor 1, porque o Linux presume que nem todo arquivo criado será executável!

Continuando com as permissões especiais… no post anterior, vimos que tanto o neo como a trinity, já estão criando arquivos dentro do diretório /mnt/private, com o grupo private:

$ cd /mnt/private/

$ ls -l
total 0
-rw-r–r– 1 neo     private 0 2009-03-29 02:43 arquiteto.txt
-rw-r–r– 1 trinity private 0 2009-03-29 02:41 sentinelas.txt

Mas… uma coisa ainda não está certa. Vejam as permissões dos arquivos que o neo e a trinity criaram. Está como 644 (leitura e escrita para os donos, e somente leitura para o grupo e outros).

Se estamos falando de um diretório onde as pessoas que fazem parte do grupo devem conseguir ler e escrever… temos que alterar as permissões. Só que, se alterarmos as permissões na mão, da próxima vez que criar arquivos, ainda assim estarão com as permissões erradas.

Então, nessa hora entra em ação a umask… Como vimos, a trinity tem a umask 022, que é a padrão do sistema.

No caso, precisamos que para os arquivos que forem criados daqui pra frente, os usuários que façam parte do grupo private, tenham permissão de escrita também… e não somente o dono!

Para calcular a nova umask da trinity e do neo, vamos fazer conta de padeiro de novo!

Descobrindo nova umask
Bem, descobrimos que a umask que deve ser usada, é a 002. E, como comentado acima, o sistema não presume que todo arquivo criado é um executável, fazemos a continha de padeiro de novo, para saber qual a permissão padrão para os arquivos:

Novo valor de permissao para arquivos

Agora que ja sabemos o valor das permissões para criação de novos arquivos, vamos corrigir a umask dos usuários trinity e neo no arquivo .bash_profile que está no home dos usuários.

Só lembrando, dependendo da distribuição, o arquivo a ser editado é .profile dentro do diretório home do usuário.

# vim /home/trinity/.bash_profile

Localize a linha referente ao umask:

#umask 022

A linha esta comentada… descomente a linha e vamos alterar o valor da umask. Ficará assim:

umask 002

E, para que a nova umask comece a valer, basta que os usuários desloguem e loguem novamente. Ou então… para facilitar, logados como usuários trinity e neo, basta atualizar o arquivo .bash_profile ou .profile:

$ source ~/.bash_profile

E pra conferir, como usuários trinity e neo, executa o comando abaixo… que já deve sair a umask correta!

$ umask
0002

Agora, como root, vamos analisar os novos arquivos que os usuários neo e trinity criaram dentro do diretório /mnt/private:

# cd /mnt/private/

# ls -l
-rw-rw-r– 1 neo     private 0 Mai 16 10:10 zion.txt
-rw-rw-r– 1 trinity private 0 Mai 16 10:10 report.txt

Bem, a trinity criou um arquivo chamado reports.txt e o neo, um arquivo chamado zion.txt… e agora, esses arquivos já vieram com a permissão correta! No bloquinho de permissões do grupo, quem faz parte do grupo, pode editar os arquivos que eles criaram!

E ficamos aqui por enquanto! No próximo post, irei falar sobre as outras permissões especiais… faltam duas! Até la!🙂 .

0 Responses to “Permissões x umask”



  1. Deixe um comentário

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




Follow Nix on WordPress.com
maio 2009
S T Q Q S S D
« abr   jun »
 123
45678910
11121314151617
18192021222324
25262728293031

Flickr Photos

Fast-flying Falcon

Mais fotos

%d blogueiros gostam disto: