Leia, grave e execute!

Neste artigo abordarei as permissões no Linux, ou seja, como atribuir/retirar uma permissão, mudar o dono/grupo de um arquivo. Enfim, entender como este mecanismo funciona.

[ Hits: 177.096 ]

Por: Fabio Maran em 02/09/2008 | Blog: http://movimentolivre.zip.net


Umask



Lembra quando criamos os arquivos permissao1 a permissao6? Eles foram criados com as mesmas permissões, assim como qualquer arquivo que você criar, isso é um fato. Vamos analisá-lo?

Navegue em qualquer diretório, melhor, crie um novo diretório, pode ser como root, como usuário normal, tanto faz. Feito isso crie mais seis arquivos lá dentro.

Ex:

# cd /tmp
# mkdir arquivos
# cd arquivos
# touch teste{1,2,3,4,5,6}


Ok, vamos ver como ficou isto:

# ls -l test*
-rw-r--r-- 1 maran maran 0 2008-08-31 16:02 teste1
-rw-r--r-- 1 maran maran 0 2008-08-31 16:02 teste2
-rw-r--r-- 1 maran maran 0 2008-08-31 16:02 teste3
-rw-r--r-- 1 maran maran 0 2008-08-31 16:02 teste4
-rw-r--r-- 1 maran maran 0 2008-08-31 16:02 teste5
-rw-r--r-- 1 maran maran 0 2008-08-31 16:02 teste6

Hummm, igualzinho não é? Isso acontece pelo fato de já estar definido em seu sistema como seriam as permissões para novos arquivos e diretórios. Mas como? Não defini nada, pois é, mas já definiram isso para você.

O sistema automaticamente já vem configurado assim, por mero motivo de segurança, afim de evitar que outros usuário excluam seu arquivos e vice-versa, porém isto pode ser alterado e definido como você queira.

Rodem em um terminal o comando:

# umask
0022 -----> Permissão para novos arquivos de todo sistema

Viram, ele definiu uma permissão de leitura para grupo e outros.

Isso pode ser uma questão de segurança, para que não ocorra de alguém excluir/modificar ou sei lá, fazer o que quiser com um arquivo, por apenas participar do grupo. Essa é a permissão padrão de todas distribuições Linux.

Legal, aí você me pergunta, e se eu precisar mudar isso, para que assim não tenha que sempre mudar? Esta é uma grande decisão, pois você pode alterar isto de duas maneiras:
  • Uma permanente e outra apenas provisória.

Mas como assim?

Vamos lá, digamos que eu queira que no diretório /home/maran/aulas sempre sejam criados com -rw-rw----. Eu viria como root e digitaria:

# umask 0227 /home/maran/aulas

Porém como cheguei a esta conclusão de que teria que ser 0227? Vamos entrar em outro assunto, chamado contagem de umask.

Para que você saiba qual umask definir, não é algo muito complexo, existem pessoas que até criam seu próprio mecanismo ou programas (scripts) que tenham esta função.

Você pega a permissão máxima que existe no Linux, que é rwxrwxrwx, ou em valor octal 777. Feito isso você subtrai pela permissão desejada:

777 ---> Permissão máxima
550

Resultado:

0227

Simples né, porém você tem que ficar atento em algo, a umask para arquivos e diretórios tem "valores" diferentes. Como assim? Eu defini que teriam permissão rw rw --- no diretório aulas, mas será que funcionou?

# umask 0227 /home/maran/aulas

Certo, agora criamos um arquivo:

# touch aula1.txt

# ls -l /home/maran/aulas

-rw-r--r-- 1 maran maran 0 2008-08-31 16:08 aula1.txt

Não saiu como desejado não é? Mas e se eu der um:

# mkdir /home/maran/aulas/permissao

# ls -ld /home/ubuntu/aulas/permissao

drwxr-xr-x 2 maran maran 60 2008-08-31 16:09 /home/maran/aulas/permissao

Não foi como queríamos né? Então vamos analisar isto:

E se tratássemos as permissões na hora da subtração da umask para:

Arquivos ---> 777
Diretórios ---> 666

Vamos fazer um teste baseando-se em nível de diretórios, porém vale lembrar que para se acessar o diretório, você deve definir uma permissão de execução (x).

666
660
006

# umask 0006 /home/maran/aula/*

Vamos fazer um teste então:

# cd /home/maran/aula
# mkdir permissao2
# ls -ld permissao2

drwxrwx--x 2 maran maran 60 2008-08-31 16:22 permissao2

Hummm, como queríamos não, é? E se eu criar um arquivo agora, será que o mesmo ficará com a permissão desejada?

# touch teste.txt
# ls -l

-rw-rw---- 1 maran maran 0 2008-08-31 16:27 teste.txt

Humm, acho que chegamos a uma conclusão, veja:

Se eu quero que um diretório ou tudo que estiver dentro daquele diretório seja criado com uma permissão especifica, eu faço a umask no diretório e não a nível de arquivos. ;)

Agora se você quiser definir permanentemente este tipo de permissão, você pode editar o arquivo /etc/profile. Se eu der um cat neste arquivo, veja o que me é retornado:

# cat /etc/profile

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

if [ "$PS1" ]; then
  if [ "$BASH" ]; then
    PS1='\u@\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

umask 022

É só alterar a linha umask para desejada, porém eu faço um esquema diferente. Alguns arquivos são carregados quando fazemos logon no sistema, seguindo a ordem, eles são carregados assim:

/etc/profile
~/.bash_profile
/root/.bashrc
/etc/bash.bashrc

O que eu faço, como a administração do sistema eu deixo para o usuário root, eu edito o arquivo /root/.bashrc, e insiro no final deste arquivo:

umask desejada

Assim todo arquivo/diretório que o root criar virá com esta permissão, aí o que eu faço, quando eu defino uma hierarquia de diretório para novos usuários, eu tenho que deixar o grupo sendo daqueles usuários, aí eu mudo o grupo dono do arquivo/diretório e insiro um SGUID nele, vocês verão mais pra frente o que é isso, aí eu resolvo todo meu problema.

É isso aí, assim terá esta umask permanentemente, porém tome cuidado e tenha certeza do que está fazendo. Se você tiver uma boa administração de seu sistema, é ate aconselhável fazer isto, pelo menos em meu ponto de vista, pois quebra um galhão.

:)

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Visão geral
   3. Alterando o dono/grupo de um arquivo
   4. Atribuição de permissão por soma ou subtração
   5. Atribuição direta
   6. Atribuição octal
   7. Umask
   8. Atribuições especiais: Stick Bit, SGUID e SUID
   9. Testando o conhecimento adquirido: um problema e uma solução
   10. Considerações finais
Outros artigos deste autor

Debian e o Backports

Samba: Implementando um domínio

Instalando o KDE 4 no Debian

DansGuardian: Filtrando o acesso a Web

Desvendando os filesystems

Leitura recomendada

Instalando seu Debian Sarge (Parte I)

Gnome-shell no Ubuntu em um clique

JIGDO, atualização de uma imagem .iso

Como Rodar Shell Script e Python via Apache no Linux

Slackware 13.37 - Compreendendo o processo de inicialização

  
Comentários
[1] Comentário enviado por robsonbraga em 02/09/2008 - 11:34h

Cara, parabens, já conheço bem do assunto, mas sempre dou umas espiadas nos artigos e o seu está muito bom, bem didático e bem escrito, até parece que ta escrevendo o livro PERMISSÕES FOR DUMMIES.

Abraço.

[2] Comentário enviado por removido em 02/09/2008 - 11:59h

Parabéns maran,
um dos melhores que já ví sobre permissões ...

[3] Comentário enviado por maran em 02/09/2008 - 13:10h

@robsonbraga, fala meu velho, obrigado pelo comentário, livro rsrsr quem me dera ;)

@noel fala velinhu tudo na paz????
Obrigado !!!

Abraços

[4] Comentário enviado por fulllinux em 02/09/2008 - 13:37h

Ponte que partiu kara!!!! Já está aqui... ehehe... posso dizer que esse já tive a oportunidades de dar uma espiada!!! heheh...
Grande maran... kara esse ficou show!!!!

Abraço...

[5] Comentário enviado por gjr_rj em 02/09/2008 - 13:55h

Cara, parabéns !!!!

Acho que como todos que comentaram, entrei apenas parar ver, pois acreditava que iria falar de um assunto, já bem, conhecido por mim e acabei aprendendo muita coisa.

Não li muitos artigos sobre permissões para poder comparar, mas pela qualidade do seu, apostaria alto em que não houve artigo nem parecido.


[6] Comentário enviado por maran em 02/09/2008 - 14:07h

@Rafael, puxa foi rapido meu velho mostrei ele para vocÊ, e logo depois já veio pra cá shuhusahusahusahusahu.
Vaaleu meu velho :)

@Geraldo, fala meu velho, como que estas?
Muito obrigado pelo comentário, bom quanto a outros artigos, cada um tem seu diferencial, porem todos vem para somar, assim como o meu!

Abraço

[7] Comentário enviado por tiagotavares em 02/09/2008 - 14:36h

Minha nossa, que muleque atentado, tá virando o rei dos artigos, sempre que abro o viva o linux tem um artigo novo seu!

Abraço!

Tiago

[8] Comentário enviado por cesar em 02/09/2008 - 16:21h

Muito bom maran

Parabéns.

[]'s

[9] Comentário enviado por dfsantos em 02/09/2008 - 18:29h

Show de bola maram

bem didatico... muito bom mesmo.


[10] Comentário enviado por diegofsouza em 03/09/2008 - 08:58h

Ótimo artigo... Muito completo. Gostei!

Abraço!

Viva o Linux

[11] Comentário enviado por percival em 03/09/2008 - 11:09h

Artigo de nível, parabéns.

[12] Comentário enviado por maran em 04/09/2008 - 06:55h

@dfsantos , muito obrigado pelo comentário.

@Cesar, fala mey velho, obrigado pelo coment

@Percival, :)

Abraços

[13] Comentário enviado por balani em 04/09/2008 - 09:10h

Excelente artigo, parabens!

[14] Comentário enviado por kalib em 04/09/2008 - 10:56h

Isso tudo foi pra me fazer ficar cansado?? hauhauah
Show de bola cara...bem completo e extenso. ;] Boa didática...
Tive que dividir em dois dias de leitura pq esses dias tem sido corridos aqui no trabalho..por isso demorei a comentar.. huahah

grande abraço..parabéns

[15] Comentário enviado por maran em 04/09/2008 - 11:24h

@kalib, fala meu velho, uhsauhashuashusa
cansado rsrs, eu ia manda lá pra aquele nosso esquema, mas ia ficar muito grande oO"
ehhehe que isso meu velho, obrigado pelo comentário ;)

Abraços, te mais...

[16] Comentário enviado por pink em 04/09/2008 - 13:38h

Maranzinho, parabéns... li inteiro seu artigo, nossa muito bom, fácil entendimento, bom português..... apesar de nada novo ser me apresentado eu tinha que comentar hehehe, artigos como esses valorizam o VOL, pode ter certeza que esse artigo é muito mais que somar, é multiplicar valores...
Permissões é algo essencial a todo user/adm, esse tutorial será útil não somente para iniciantes, para avançados também sobre um tema muito importante e pouco discutido.
Parabéns novamente, obrigada pela contribuição, você tem toda a minha admiração....
# chmod 700 /root/pink/s2/maran
Fique com Deus,
Michele [pink]

[17] Comentário enviado por maran em 04/09/2008 - 13:51h

@caipirinha, Olá minha querida :)
Ahh que bom que o cê gosto do artigo do compade aqui, rsrsrs
Brincadeira a parte, realmente este é um assunto muito importante, e realmente pouco comentado, mais creio eu pelo fato de ser de simples entendimento de todos , mas é sempre bom prevenir né?
Bom:
# cd /s2
# mkdir caipirinha
# echo 'você pode' > fazeroseguinte.txt
# chmod 700 /s2/*
# echo 'rabiscar,pintar e bordar' > aquidentro.txt

Beijinhus

[18] Comentário enviado por homme em 08/10/2008 - 20:26h

O artigo contribuiu muito para meu aprendizado, tem muuita informação.
Porém, a tabela octal me deixou confuso a princípio.
Quando atribuo a permissão 321, ela mostra '--wx-w---x' e não '-r-x-w-r--' como mostra o exemplo.
Fiz alguns testes de 000 até 777 e eu cheguei a uma tabela
1 - x
2 - w
4 - r
Desculpe se estou falando asneiras.
Muito obrigado.
Rafael

[19] Comentário enviado por fainfo em 13/12/2009 - 18:20h

Nossa cara me matei lendo artigos aqui pra entender umask, e o seu foi muito claro didático, porra muito bem, agora com esse método eu não preciso fazer mais cálculo com binários?

se quiser mandar resposta por e-mail " fainfonet@gmail.com

[20] Comentário enviado por fbcborges em 24/06/2010 - 10:07h

Muito bom o artigo, sou iniciante obtive recentemente no curso essas permissões e com mais esse material, deu para clarear bastante o raciocíonio perante a esta função do Linux.
Parabêns pelo artigo, agradeço em nome de todos os iniciantes em Linux.

[21] Comentário enviado por josemirsilva em 07/01/2012 - 15:12h

boa tarde,
chegamos em 2012, e seu artigo parace que foi feito onde, valeu, que voce continue esclarecedo o grupo que pesquisa aqui no vivaolinux.

valeu

Deus continue te abençoado.


[22] Comentário enviado por Badabum em 17/05/2012 - 11:52h

Muito obrigado pelo seu artigo...Muito bem feito...Salvou umas 3 vidas no minimo.

[23] Comentário enviado por igor_rocha em 20/07/2012 - 02:55h

Esse gurizão ai ta de parabéns!! show de bola!!

[]S

[24] Comentário enviado por dodo1986 em 11/02/2013 - 19:16h

Muito bom este artigo, acabei de fazer o curso de Linux em uma institição, porem havia me esquecido dessas permissoes. me ajudou muito.

[25] Comentário enviado por edertux em 04/03/2015 - 17:38h

Parabéns @maran, artigo de alto nível!

Galera do VOL, ainda estou com uma dúvida:

Criei dois arquivos teste:
/home/edertux/primeiro, é vazio e com permissão -rw-r--r-- para receber qualquer coisa.
/home/edertux/segundo,é um script e com permissão -rwsr-xr-x para alimentar o /home/edertux/primeiro.

Faço login com um segundo usuário, executo /home/edertux/segundo normalmente (afinal, ele tem permissão para isso), porém quando chega na parte de alimentar (echo "Qualquer coisa" >> /home/edertux/primeiro) ele dá permissão negada.

Partindo do princípio que o /home/edertux/segundo está com SUID habilitado, outros usuários não deveriam conseguir alimentar o /home/edertux/primeiro ao executar /home/edertux/segundo?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts