Entendento o comando chmod

Aqui descrevo de forma prática e rápida o comando CHMOD, explicando sobre as permissões. Espero que isso ajude a entender como funciona, pois tive diversos problemas até entender as permissões.

[ Hits: 272.248 ]

Por: JuiceMan em 20/02/2008


Alterando as permissões de acesso a um arquivo



Usando o comando 'chmod' para alterar as permissões de um arquivo, observando que ele somente muda a permissão não muda o tipo de arquivo.

Este comando pode ser usado de duas maneiras:

1º (primeiro):

chmod <atribuição> arquivo ou diretório

Onde "atribuição" é uma seqüência de caracteres formada por:
  • "u" = usuário, dono do arquivo ou documento.
  • "g" = grupo
  • "o" = outros

Devemos indicar as classes que terão as permissão alterada, usando os sinais: "+", "-" ou "=" => indica se a permissão sera adicionada (+), retirada (-) ou definida (=), indicada por um dos caracteres "r" (leitura), "w" (escrita) ou "x" (execução) indicando as permissões.

Exemplo:

# chmod joão=+rw /mp3

Este comando determina que o dono, o grupo e todos os outros usuários tenham permissão de leitura e escrita no diretório /mp3. Outro exemplo é dar permissão á um grupo e outros para escrever na diretório. Fica assim:

# chmod go-r /mp3

Desta forma o grupo e outros terão permissão somente de leitura as músicas que estão dentro da pasta.

-rw-r--r--   1 root  root  1200 2008-01--25 20:09 /mp3

2º (segundo):

Outra forma de usar o 'chmod' é usar números para definir as permissões. Exemplo:

chmod número arquivo

Onde "número" é formado por 3 algarismos,todos no intervalo de 0 a 7, de tal forma que a representação binaria com 9 dígitos deste número esteja relacionada aos modos de permissão como na tabela no inicio ou da seguinte forma:
  • 0 = corresponda a permissão negada "-".
  • 1 = corresponda a permissão concedida, pode ser de leitura, escrita ou execução.

Exemplo:

# chmod 640 /mp3

Onde 640 é corresponde a:
  • 6 = dono ( é a soma do leitura(r) + escrita(w) ).
  • 4 = grupo( é somente leitura(r) ).
  • 0 = outro( não permissão de acesso a pasta(-) ).

Essa conversão octal <---> permissões é feita facilmente se você observar a seguinte tabela:
	       ---------------------------------------
	       número    binário equiv.   permissões
	       ---------------------------------------
		  0           000            ---
		  1           001            --x
		  2           010            -w-
		  3           011            -wx
		  4           100            r--
		  5           101            r-x
		  6           110            rw-
		  7           111            rwx
	       ---------------------------------------

Abaixo deixo uns exemplos.

Exemplos diversos

PermissõesComandoDescrição
-r--------chmod 400 arquivoSomente o dono pode ler o arquivo, ninguém pode escrever.
-r--r--r--chmod 444 arquivoTodos podem ler o arquivo, ninguém pode escrever.
-rw-rw-rw-chmod 666 arquivoTodos podem ler e escrever no arquivo.
drwxrwxrwxchmod 777 diretórioTodos podem ler, escrever, criar ou apagar arquivos do diretório.
drwx------chmod 700 diretórioSomente o dono pode ler, escrever, criar ou apagar arquivos. Ninguém mais pode ter acesso a este diretório.
drwx-wx-wxchmod 733 diretórioO dono tem acesso total ao diretório. Todos os outros usuários podem apenas escrever.

Página anterior    

Páginas do artigo
   1. Comando chmod
   2. Os modos de permissão no Unix
   3. Alterando as permissões de acesso a um arquivo
Outros artigos deste autor

Montar HD em NTFS com o ETCH

Leitura recomendada

Wake-on-LAN (WOL) utilizando Netcat - Dissecando o protocolo

O "Linux Tinha Chapéu"

Raspberry Pi 4B Como Servidor Linux de Baixo Custo

Nagios Falante

Atualizando o clamav via YUM no Fedora Core 3

  
Comentários
[1] Comentário enviado por maran em 20/02/2008 - 17:01h

Muito bom cara, bem explicado, fundamental para um bom começo.
Você poderia ter dado mais exempls usando

chmod u=rwx g=rwx o=r
E assim por diante.
É mais fácil pelo menos na minha opnião para quem nunca teve um contato.

So isso eu acrescentaria neste artigo , mais exemplos, de resto.
Excelente.

[2] Comentário enviado por eduardo em 21/02/2008 - 08:56h

Só adicionando, quando você usa o modo octal, se lê sempre da esquerda para a direita, por exemplos, chmod 700 é o mesmo que chmod 7.

Mas muito bom o artigo

[3] Comentário enviado por bicalho em 21/02/2008 - 12:29h

Artigo simples, claro e direto...
Muito bom
Parabens

[4] Comentário enviado por mcnd2 em 28/02/2008 - 22:29h

Está de parabéns pelo artigo.

Eu tive já alguns problemas com permissões de arquivos e não sabia como poderia resolver. Depois desse artigo, acho que já posso começar a editar certas permissões, sendo que eu sou o único usuário do computador então só seria necessário editar as permissões dos arquivos de root pois como usuario comum não tenho permissão total para executar certos arquivos. Acho que é isso.

Mais uma vez está de parabéns.

[5] Comentário enviado por rodrigoclira em 21/04/2009 - 00:25h

Otimo artigo ,
conseguiu me explicar de onde saia aqueles números
mágicos 777 640 ... agora tenho uma duvida
como eu faço pra a permissão tambem ser dada as sub-pastas da pasta
que dei permissão.

abraço

[6] Comentário enviado por roberto_espreto em 15/09/2009 - 03:13h

Para dar permissão para as sub-pastas, basta adicionar a opção -R (De recursivo) no comando chmod.
Ficando assim o comando:

# chmod -R 777 pasta/

Artigo legal.

[7] Comentário enviado por leClikk em 24/12/2010 - 15:47h

Valeu juiceman!

Estava aqui penando com as permissões. Agora, tudo parece mais simples.

Feliz natal.

[8] Comentário enviado por cbcarlos7 em 30/10/2012 - 10:05h

Depois de muito tempo usando o chmod 777 sem saber direito o risco que eu estava correndo, porque não entendia, finalmente hoje, entendi de acordo com seu artigo, parabéns!

[9] Comentário enviado por thiago.matar em 07/11/2012 - 09:16h

O artigo me fez resolver um problema de LOGIN INCORRECT ao tentar logar com o usuario root.

verifiquei que foi permitido acesso 777 ao diretorio /, com isso meu SSH e outros serviços pararam.
foi só usar o comando chmod -R 740 / e reiniciado o SSH que funcionou normalmente.

Obrigado

[10] Comentário enviado por Mestre_Vrw em 30/01/2013 - 18:51h

Uma duvida eu entendi o comando -R para as sub-pastas e para os arquivos das sub-pasta tb vai funcionar com esse comando?

Digo posso alterar qualquer arquivo dentro da sub-pasta só com o -R ???

Obrigado e esta de parabéns...

[11] Comentário enviado por Mestre_Vrw em 30/01/2013 - 19:47h

Mais uma duvida estou aplicando este comando aqui chmod -R 776 Pasta/ e não esta funcionando convidados não consegue entrar na pasta.
Este outro comando aqui o pessoal entra mais não consegue criar ou apagar chmod -R 775 Pasta/ estou executando como root pelo su, alguem podeira me ajudar?

Obrigado.

[12] Comentário enviado por lm.pintanel em 31/01/2013 - 09:41h

Bom o artigo, esta precisando de ajuda.
Esclareceu todas as minhas dúvidas sobre o assunto.

[13] Comentário enviado por NewScript em 09/01/2014 - 14:52h

Ola, obrigado pelo artigo. Muito bom. Só fiquei como uma dúvida:

Vc usou o exemplo:
# chmod joão=+rw /mp3

-- Essa é a forma de adicionar determinadas permissões a determinado usuário?

Se for... o que estou fazendo de errado quando tenho 3 usuários, root, carlos e paulo,
e com o usuário carlos, dono do arquivo, teste.doc, e no local onde esta este arquivo,
tento:
chmod paulo=+rwx teste.doc
e não dá certo....

Estou usando o Debian 7 e já tentei inclusive com o root...

[14] Comentário enviado por jefferson07 em 11/03/2014 - 20:07h

Muito bom o artigo, muito bem explicado!

[15] Comentário enviado por skywalk em 01/01/2015 - 13:21h

O akkiri.com também tem um artigo sobre o comando CHMOD.

http://www.akkiri.com/dicas/chmod.php

[16] Comentário enviado por AC_BC em 12/09/2015 - 17:14h

O artigo está muito objetivo e deixa o assunto bem claro, mas no final, quando são apresentados alguns exemplos, no ultimo deles, que é assim
drwx-wx-wx chmod 733 diretório
O dono tem acesso total ao diretório. Todos os outros usuários podem apenas escrever.
Pelo que eu tinha entendido seria assim:

111 == (1 x 2²) + (1 x 2¹) + (1 x2&#8304; ) = (4 + 2 + 1 = 7) => todos os direitos
110 == (1 x 2²) + (1 x 2¹) + (0 x 2&#8304; ) = (4 + 2 +0 = 6) => escrita e leitura
101 == (1 x 2²) + (0 x 2¹) + (1 x 2&#8304; ) = (4 + 0 +1 = 5) => leitura e execução
100 == (0 x 2²) + (1 x 2¹) + (0 x 2&#8304; ) = (4 + 0 +0 = 4) => somente escrita
011 == (0 x 2²) + (1 x 2¹) + (1 x 2&#8304; ) = (0 + 2 +1 = 3) => excrita e execução
010 == (0 x 2²) + (1 x 2¹) + (0 x 2&#8304; ) = (0 + 2 +0 = 2) => somente escrita;
001 == (0 x 2²) + (0 x 2¹) + (1 x 2&#8304; ) = (0 + 0 +1 = 1) => somente execução;
000 == (0 x 2²) + (0 x 2¹) + (0 x 2&#8304; ) = (0 + 0 +0 = 0) => nenhuma permissão.

Pelo seu exemplo sendo 733, tem 3 para o grupo e 3 para o resto, logo, esses podem escrever e executar, e não apenas escrever como mencionado.
Para ter permissão apenas para escrever, é necessário que o valor seja 4 (010).
Se não for assim, precisarei ler outras vezes o artigo, para tentar compreender.

Origado e um abraço!

OBS.: Não soube como corrigir, mas 2&#8304; é 2 elevado a ZERO 2&#8304;


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts