Linux slogan
Visite também: BR-Linux.org · Dicas-L · SoftwareLivre.org · UnderLinux



» Screenshot

Dica

Chmod + dicas
Linux user
Publicado por Thiago em 25/05/2006

Login: thiagoams, 204154 pontos
[ Hits: 175078 ]

Chmod + dicas

By sc4rf4c3@post.com

Usando e entendendo permissões no Linux


Resolvi montar essa pequena dica, sei que já existem várias, porém vou colocar algumas dicas do chmod, porque onde trabalho fizeram o favor de setar um chmod -R 777 na pasta /, aí o servidor ficou com permissão errada para todos os arquivos, tive que setar as permissões arquivo por arquivo comparando com outra máquina com mesmo sistema Slackware, pois não podíamoss desligar o servidor.

Exemplos de permissões nos arquivos:

drwxr-xr-x 19 root     root           4096 Jan  5 16:56 ../
-rwxr-xr-x  1 root     root           38812 Mar  9  2003 MAKEDEV*
-rw-r--r--  1 root     root           1162 Mar  9  2003 README.MAKEDEV
lrwxrwxrwx  1 root     root           4 Oct 15  2003 X0R -> null
crw-rw----  1 root     root           10, 175 Mar 25  2001 agpgart
crw-rw----  1 root     root           1,  10 Mar 25  2001 aio
drwxr-xr-x  2 root     root           4096 Jun 11  2002 amiraid/
crw-r--r--  1 root     root           10, 134 Jun  7  1996 apm_bios
crw-rw----  1 root     root           36,   8 Mar 25  2001 arpd
drwxr-xr-x  2 root     root           4096 May 19  2002 ataraid/
crw-rw----  1 root     sys            10,   3 Jul 17  1994 atibm
crw-rw----  1 root     root           10, 186 Mar 25  2001 atomicps
crw-rw--w-  1 root     sys            14,   4 Jul 18  1994 audio
crw-rw--w-  1 root     sys            14,  20 Jul 18  1994 audio1
brw-r-----  1 root     disk           29,   0 Feb 15  1995 aztcd
crw-r--r--  1 root     root           10, 128 May 24  1996 beep
drwxr-xr-x  2 root     root           36864 Jun  3  2002 cciss/
lrwxrwxrwx  1 root     root           8 Oct 15  2003 cdrom -> /dev/hdd
brw-r-----  1 root     disk           24,   0 Jul 18  1994 cdu535
crw-rw----  1 root     root           67,   0 Mar 25  2001 cfs0

O primeiro caractere da string indica o tipo de arquivo. Se for "d" representa um diretório, se for "-" equivale a um arquivo.
  • d: diretório
  • b: arquivo de bloco
  • c: arquivo especial de caractere
  • p: canal
  • s: socket
  • -: arquivo normal

É necessário ter um certo cuidado com as permissões. Por exemplo, do que adianta o usuário ter permissão de gravação se ele não tem permissão de leitura habilitada? Ele poderá ler o arquivo para poder modificá-lo? Não! De certo, isso tem utilidade em arquivos de log.

Fazendo associação com as letras r, w, x e o caractere -, vamos entender cada uma:
  • r: significa permissão de leitura (read);
  • w: significa permissão de gravação (write);
  • x: significa permissão de execução (execution);
  • -: significa permissão desabilitada.

Atenção:
  • ---: nenhuma permissão;
  • r--: permissão de leitura;
  • r-x: leitura e execução;
  • rw-: leitura e gravação;
  • rwx: leitura, gravação e execução.

Vamos supor que o arquivo estava assim:

crwxrwxrwx 1 root disk 37, 128 Dec 11 1995 nht0

Dessa forma ele está errado. Sua forma correta é:

crw-r----- 1 root disk 37, 128 Dec 11 1995 nht0

Usei o comando:

# chmod 640 nht0

Alterando as permissões de crwxrwxrwx para crw-r-----. Note que sempre as letras iniciais não mudam, ok?

O comando chmod -R seta as permissões no diretório e nos arquivos dentro dele, cuidado com isso, foi o que fizeram aqui no meu servidor.

Use assim:

$ chmod [número] [nomedoarquivo]

Exemplo:

# chmod 755 apache

Comando Número Permissão
chmod 000 ---------
chmod 400 r--------
chmod 444 r--r--r--
chmod 600 rw-------
chmod 620 -rw--w----
chmod 640 -rw-r-----
chmod 644 rw-r--r--
chmod 645 -rw-r--r-x
chmod 646 -rw-r--rw-
chmod 650 -rw-r-x---
chmod 660 -rw-rw----
chmod 661 -rw-rw---x
chmod 662 -rw-rw--w-
chmod 663 -rw-rw--wx
chmod 664 -rw-rw-r--
chmod 666 rw-rw-r--
chmod 700 rwx------
chmod 750 rwxr-x---
chmod 755 rwxr-xr-x
chmod 777 rwxrwxrwx
chmod 4711 -rws--x--x

Outro detalhe, os símbolos:
  • u: usuário
  • g: grupo
  • o: outros
  • a: totos

Para mostrar como essa combinação é feita, vamos supor que você deseje adicionar permissão de gravação no arquivo teste.txt para um usuário. Então o comando a ser digitado será:

$ chmod u+w teste.txt

O "u" indica que a permissão será dada a um usuário. O sinal de adição (+) indica que está sendo adicionada a permissão e "w" indica que a permissão que está sendo dada é de gravação.

Caso você queira dar permissões de leitura e execução ao seu grupo, o comando será:

$ chmod g+rw teste.txt

vamos supor que o arquivo teste.old deverá estar com todas as permissões disponíveis para o grupo. Podemos usar então:

$ chmod g=rwx teste.txt

Usar o chmod com valores numéricos é algo bastante prático. Em vez de usar letras como símbolos para cada permissão, usam-se números. Se determinada permissão é habilitada, atribui-se valor 1, caso contrário, atribui-se valor 0. Sendo assim, a string de permissões r-xr----- na forma numérica fica 101100000. Essa combinação de 1 e 0 é um número binário.

Mas temos ainda que acrescentar a forma decimal (ou seja, números de 0 a 9). Para isso, observe a tabela abaixo:

Permissão Binário Decimal
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7

Pra quem está começando agora vai ser um pouco complicado entender de uma vez isto, porém se você possui uma maquina com Linux, treine.




Outras dicas deste autor

Leitura recomendada
   Dica Linux recomendada Instalando Kernel 2.6.39.2 no Slackware 12
   Dica Linux recomendada Instalação do DBDesigner4 no Linux
   Dica Linux recomendada Configurando internet via radio no Slackware 10.1
   Dica Linux recomendada Xubuntu + LXDE
   Dica Linux recomendada O pacote mtools

Comentários
[1] Comentário enviado por hccelo em 25/05/2006 - 16:43h:

acho que é formato octal e nao decimal não?!?! numeros de 0 a 7 na verdade.
mas tá mto legal...

falou....


[2] Comentário enviado por PCMasterPB em 27/05/2006 - 17:07h:

Muito bom pra se ter como referência. Valeu pela dica.


[3] Comentário enviado por rafaiusko em 09/08/2007 - 16:46h:

Muito boa essa dica!
Fica bem explícito a função do chmod e me ajudou pra caramba!


[4] Comentário enviado por gandiva em 24/09/2007 - 20:59h:

Valeu, parabens, eu estava procurando uma ajuda para entender as opções do chmod e adorei essa dica! Ótima!


[5] Comentário enviado por chuvisco em 15/11/2007 - 08:43h:

Olá, eu uso Ubuntu e não consigo setar as permissões para gravar na minha partição do windows. É windows vista, faz alguma diferença???


[6] Comentário enviado por vinicius.fonseca em 19/11/2007 - 15:16h:

ow legal a dica e bem prático pra quem já tem experiencia, pra galera que naum saca muito ainda fica meio soh de cola msm, mas tah valendo.


[7] Comentário enviado por vinicius.fonseca em 19/11/2007 - 15:21h:

olá chuvisco, veja se sua partição do vista é ntfs (o que com certeza deve ser), se for vc deve habilitar o modo de escrita, que naum vem como padrão no Ubuntu (depende da versão).


[8] Comentário enviado por peparocha em 28/12/2007 - 07:58h:

Salve, comunidade:

Chuvisco: nunca usei ubuntu, mas me parece que, a maioria das distros linux usam praticamente a mesma arquitetura de arquivos, portanto a dica que o nosso irmão vinicius postou, tem que ser vista no "fstab", que é o arquivo que monta as partições na inicialização, lá, procure a referência à partição windows e onde tiver a chave "ro" que é de leitura somente, troque por "rw", que é de leitura e escrita.........
espero ter ajudado de alguma forma......
[]'s


[9] Comentário enviado por chuvisco em 31/12/2007 - 16:28h:

esse é o meu fstab
----------------------------------------------------------------------------------------------------------
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
# /dev/sda7
UUID=5e5cceac-d6d9-4d27-a17d-9f8e37a7cc39 / ext3 defaults,errors=remount-ro 0 1
# /dev/sda1
UUID=A054DCDD54DCB6EE /media/sda1 ntfs defaults,nls=utf8,umask=007,gid=46 0 1
# /dev/sda5
UUID=D4027F13027EFA36 /media/sda5 ntfs defaults,nls=utf8,umask=007,gid=46 0 1
# /dev/sda6
UUID=7a605298-50a2-456e-892e-d22c657a79a1 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
---------------------------------------------------------------------------------------------------

o que eu tenho que mudar aqui para que eu possa gravar as coisas na partição ntfs ???=0P


[10] Comentário enviado por mattiell00 em 12/02/2008 - 19:25h:

cara show de bola, esse artigo gostei !!!


[11] Comentário enviado por fguedess em 10/05/2008 - 18:41h:

Ótimo artigo!

Já foi pros favoritos.
Parabéns.


[12] Comentário enviado por galdinocamargo em 07/07/2008 - 13:17h:

MUITO BOM!

GRATO.


[13] Comentário enviado por albfneto em 16/07/2008 - 23:12h:

Olha, o artigo é antigo, mas é massa!!!
todas as opções do importante comando chmod.
Tá no meus favoritos também....


[14] Comentário enviado por alexandreromeu em 06/12/2008 - 17:00h:

Excelênte!

Mesmo depois de dois anos continua sendo fonte de esclarecimento para os usuário que como eu, querem entender como funciona o chmod.

Parabéns!

Alexandre Romeu


[15] Comentário enviado por rafiwskis em 02/02/2010 - 23:08h:

Então [chmod +x arquivo] altera a permissão para execução de todos os usuários, estou certo?


[16] Comentário enviado por dnk em 21/06/2010 - 13:17h:

ótima dica, mas só para contribuir ai e ajudar um pouco, em vez de decorar toda a tabelinha de 0 a 7, precisa decorar somente 3: x = 1, r = 2 e w = 4 quando for rw, por exemplo, é só somar os valores de r e de w 2+4=6 e assim por diante.


[17] Comentário enviado por ederpardeiro em 13/10/2010 - 13:24h:

Boa tarde pessoal...

Muito bem explicado, porém, ainda tenho uma dúvida.

Tenho o usuário joaosilva e quero dar permissão de gravação para ele em um determinado arquivo, por exemplo: teste.txt.

De acordo com o artigo, para dar esta permissão, usamos o comando abaixo:

chmod u+w teste.txt

Mas, onde eu especifico que este usuário é o joaosilva?

Fico no oaguardo...




[18] Comentário enviado por dnk em 13/10/2010 - 15:35h:

a sintaxe é chmod opcao arquivo

exemplo:
chmod +w teste.txt

se vc quiser alterar o usuario usa chown usuario.grupo arquivo

exemplo chown joaosilva.users teste.txt

espero ter ajudado haehae

[]s
DNK


[19] Comentário enviado por ederpardeiro em 13/10/2010 - 18:51h:

Boa noite DNK,

Obrigado por responder...

Mas, pelo que percebi, o comando chown serve para definir o PROPRIETÁRIO do arquivo, sendo assim, obviamente ele terá permissão de gravação.

Mas... vamos pensar então na seguinte situação:

Tenho três usuários: pedrocabral, joaquimxavier e joanadarc

Tenho também um arquivo: teste.txt

Quero que os usuários pedrocabral e joanadarc, tenham permissão de gravação
Quero que o usuário joaquimxavier tenha permissão somente de leitura....

Como fazer?

Continuo no aguardo,

Eder Pardeiro


[20] Comentário enviado por alexandreromeu em 13/10/2010 - 19:12h:

Boa noite!

O chmod permite alterar as permissões do dono do arquivo, do grupo de usuários do qual o dono do arquivo faz parte e também de "outros usuários" (que não seja o proprioetário e que também não está no grupo do proprietáario do arquivo).

Então se um único usuário deve ter acesso, é como já te falaram: deixar ele como proprietário do arquivo e só ele com permissão.

Na situação que você colocou, o ideal acredito que é:
pedrocabral e joanadarc no mesmo grupo, e esse grupo com permissão de leitura e escrita no arquivo (eles devem estar no mesmo grupo do proprietário do arquivo ou um deles ser o proprietário do arquivo)
e o usuário joaquimxavier fora desse grupo e o arquivo com permissão só de leitura para "outros" usuários.

Lembrando que um usuário pode fazer parte de mais de um grupo ao mesmo tempo.

Alexandre Romeu


[21] Comentário enviado por ederpardeiro em 14/10/2010 - 09:08h:

Bom dia Alexandre, bom dia pessoal....

Na verdade eu precisava de algo mais profissional... para ambientes maiores que exigem maior flexibilidade para administração. Me indicaram as ACL's que são metodos diferentes de dar permissões em pastas e arquivos. Funciona como no Windows, ao qual já estou acostumado.

Segue abaixo o link para quem precisar:

http://www.guiadohardware.net/dicas/acl-linux.html

Muito obrigado pelo empenho de todos.


[22] Comentário enviado por walquira em 29/08/2012 - 10:36h:

Parabéns!!!
Alguem podia me explicar essa permissão chmod 4711 -rws--x--x?

Agradeço!!

:)


[23] Comentário enviado por davidconceicao em 08/04/2013 - 15:40h:

Valeu ajudou !!


[24] Comentário enviado por thiagoams em 27/05/2013 - 16:05h:

olá walquira, seguinte a permissão chmod 4711 -rws--x--x é sobre SUID (Set User ID)
Esta permissão sempre trabalhará no campo do proprietário do arquivo (u) e esta é uma permissão que só trabalha com arquivos executáveis, ela serve para o propósito de um usuário comum poder executar aplicativos ou comandos de root ou do dono do arquivo.

Veja melhor em: http://www.vivaolinux.com.br/artigo/Leia-grave-e-execute?pagina=8

att, Thiago



Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.