chmod: Modos Numérico e Simbólico de Permissões

chmod: Modos Numérico e Simbólico de Permissões

O que você vai conseguir fazer

  • Calcular `644` e `755` sozinha somando `r=4`, `w=2` e `x=1`
  • Montar o modo simbólico com `u` `g` `o` `a` e `+` `-` `=`
  • Escolher o numérico para um estado final e o simbólico para somar ou tirar um pouco

Pré-requisitos (leia estes primeiro)

Quais são as "duas formas de escrever" do chmod?

Lina: Linny-senpai, eu pesquisei sobre chmod. Alguns artigos escrevem chmod 644. Outros escrevem chmod u+x. Qual está correto?
Veterano Linny: Os dois estão corretos. O chmod tem duas notações.
Veterano Linny: O modo numérico define tudo de uma vez com dígitos. O modo simbólico usa letras como u+x. Eles dizem a mesma coisa com palavras diferentes.
Lina: Então eu tenho que memorizar o dobro?
Veterano Linny: Não se preocupe. Depois de ver como funcionam, usar os dois fica mais fácil. Hoje vamos aprender a escolher um deles.

O chmod altera as permissões de arquivos e diretórios. Há duas formas de especificá-las: modo numérico (dígitos como 644) e modo simbólico (letras como u+x). Ambas definem exatamente as mesmas permissões.

As palavras deste artigo

Em uma linha

  • Modo numérico --> quando você quer definir toda a permissão de uma só vez (chmod 644 file)
  • Modo simbólico --> quando você quer somar ou tirar só um pouco do estado atual (chmod u+x file)

Combine antes um jeito seguro de praticar

O chmod reescreve uma configuração do arquivo. Se a especificação sair errada, duas coisas podem acontecer.

  • Você tirou permissão demais: nem você consegue mais ler o arquivo. Aparece Permission denied
  • Você deu permissão demais: outras pessoas passam a poder alterar o arquivo

Os dois casos se desfazem rodando o chmod de novo. O conteúdo do arquivo nunca se perde. Ainda assim, pratique deste jeito.

  1. Crie um diretórioUm local que organiza arquivos. É a mesma ideia da "pasta" do Windows ou macOS. de prática e trabalhe só dentro dele (por exemplo, mkdir -p ~/chmod-practice && cd ~/chmod-practice)
  2. Teste em um arquivo descartável, criado com touch demo.txt
  3. Rode ls -l antes e depois de cada mudança e leia o que mudou de fato

Você pode testar o chmod no terminalUm programa interativo que interpreta os comandos digitados e os executa. virtual deste site. Nenhuma configuração da sua máquina muda aqui, então teste à vontade.

Note que o terminal virtual aceita o modo simbólico uma especificação por vez. Formas unidas por vírgula, como chmod u+x,go-w file, são para uma máquina Linux real.

O Que Você Vai Aprender

  • Que o modo numérico (644, 755) e o modo simbólico (u+x, go-w) descrevem as mesmas permissões
  • Como calcular o modo numérico usando r=4, w=2, x=1
  • Como montar o modo simbólico com u/g/o/a e +/-/=
  • Como escolher entre "definir tudo" e "adicionar/remover um pouco"
  • Um padrão seguro que evita acidentes como chmod 777

1. A base compartilhada: rwx e três públicos

Conclusão: Permissões concedem leitura (r), escrita (w), execução (x) ao dono (u), grupo (g) e outros (o). Tanto o numérico quanto o simbólico apenas descrevem isso.

Lina: Honestamente, quando o ls -l mostra algo como rwxr-xr-x, parece um feitiço para mim.
Veterano Linny: O primeiro caractere não é uma permissão. Ele indica o tipo. - é arquivo e d é diretório.
Veterano Linny: Leia o resto em blocos de três. O primeiro rwx é o dono, o próximo r-x é o grupo e o último r-x é todos os outros.
Veterano Linny: São só três letras para saber. r significa ler, w significa escrever e x significa executar.

O que significam os três públicos

  • Dono (u): é quem criou o arquivo. Também chamado de "owner" ou "usuário".
  • Grupo (g): são as pessoas registradas como o mesmo time.
  • Outros (o): são todas as pessoas que não estão nos dois casos acima.
$ ls -l script.sh
-rwxr-xr-x 1 user user 128 Jun  5 10:00 script.sh
Posição Público Letra Neste exemplo Significado
caractere 1 tipo - - - é arquivo, d é diretório
caracteres 2-4 dono u (user) rwx ler, escrever, executar
caracteres 5-7 grupo g (group) r-x ler e executar
caracteres 8-10 outros o (other) r-x ler e executar

a (all) é um atalho que significa "u, g e o juntos". Vamos usá-lo mais adiante.

2. Modo simbólico: pense em adicionar e remover

Conclusão: O modo simbólico é "quem (u/g/o/a) + como (+/-/=) + o que (r/w/x)." Ele altera a partir do estado atual, então a intenção fica clara.

O modo simbólico combina três partes:

Parte Letras Significado
quem u / g / o / a dono / grupo / outros / todos
como + / - / = adicionar / remover / definir (sobrescrever)
o que r / w / x leitura / escrita / execução

2-1. Adicionar execução para o dono

$ chmod u+x script.sh

Isso dá x (executar) para u (o dono) com + (adicionar). Rode em um arquivo rw-r--r-- (644) e o resultado é rwxr--r--, então só o dono pode executar.

2-2. Remover escrita do grupo e outros

$ chmod go-w secret.txt

Isso remove w (escrita) de g e o (grupo e outros) com - (remover). Você pode atingir vários públicos de uma vez.

2-3. Deixar somente leitura para todos (o poder do =)

$ chmod a=r notes.txt

Isso dá a a (todos) somente r com = (definir). O = limpa as permissões atuais primeiro e depois as define. Então, mesmo que escrita ou execução existissem, o resultado fica somente leitura.

Lina: Qual a diferença entre + e =?
Veterano Linny: +r significa "adicionar leitura ao que já existe". =r significa "deixar somente leitura", então o resto sai.
Veterano Linny: Quando você quer ter certeza de que a execução saiu, o = é prático.

Você pode combinar especificações com vírgulas. Por exemplo, chmod u+x,go-w file adiciona execução para o dono e remove escrita do grupo e dos outros em um único comando.

Essa forma funciona em uma máquina Linux real. No terminal virtual deste site, execute como dois comandos: chmod u+x file e chmod go-w file.

3. Modo numérico: a matemática r=4 w=2 x=1

Conclusão: O modo numérico soma r=4, w=2, x=1 em um único dígito, depois alinha três dígitos para dono, grupo e outros. 644 é dono rw, outros r.

Lina: Como os dígitos são decididos? De onde vem o 6 em 644?
Veterano Linny: Cada permissão tem uma pontuação. r é 4, w é 2 e x é 1.
Veterano Linny: Depois é só somar. rw- é 4+2, ou seja, 6. r-- é 4.
Veterano Linny: Então dono 6, grupo 4 e outros 4 resulta em 644.

Memorize a pontuação de cada permissão. São apenas três.

Permissão Pontuação
r (leitura) 4
w (escrita) 2
x (execução) 1

3-0. Monte o 644 em três passos

Você não precisa decorar os dígitos. Dá para montá-los em três passos.

Passo 1: escreva com palavras o que cada público deve poder fazer.

  • Dono: quer ler. Quer escrever
  • Grupo: quer ler
  • Outros: querem ler

Passo 2: some as pontuações de cada público.

  • Dono: r (4) + w (2) = 6
  • Grupo: r (4) = 4
  • Outros: r (4) = 4

Passo 3: alinhe os dígitos na ordem dono, grupo, outros.

  • 6, 4 e 4 formam 644

Cada dígito representa um público. Por isso três dígitos cobrem três públicos.

Isso funciona ao contrário também. O 7 de 755 é 4+2+1, ou seja, rwx. O 5 é 4+1, ou seja, r-x.

Quando aparecer um 4, pense em r. Um 2 é w e um 1 é x. Qualquer combinação vem dessa soma.

Dígito Soma Letras Significado
7 4+2+1 rwx tudo
6 4+2 rw- leitura e escrita
5 4+1 r-x leitura e execução
4 4 r-- somente leitura
0 0 --- sem permissão

3-1. Combinações numéricas comuns

$ chmod 644 notes.txt    # rw-r--r-- um arquivo normal
$ chmod 755 script.sh    # rwxr-xr-x script executavel ou diretorio
$ chmod 600 id_rsa       # rw------- chave privada, somente dono
Numérico Letras Uso comum
644 rw-r--r-- arquivo normal (só o dono edita)
755 rwxr-xr-x scripts e diretórios
600 rw------- chaves privadas, arquivos de senha
700 rwx------ diretório somente do dono

Dica para leitura: leia 755 um dígito por vez. O 7 é rwx, o primeiro 5 é r-x e o último 5 também é r-x.

Com r=4 w=2 x=1 memorizado, você transita livremente entre letras e dígitos.

4. Qual usar? Um padrão para escolher

Conclusão: Use numérico para "definir toda a permissão," simbólico para "adicionar ou remover um pouco do estado atual." Escolha aquele cuja intenção fica mais clara.

Lina: No final das contas, qual devo usar na prática?
Veterano Linny: Decida pelo seu objetivo e você não vai hesitar. Se você já sabe a permissão final, o numérico é rápido.
Veterano Linny: Se você está alterando a partir do estado atual, como "apenas adicionar execução", o simbólico é mais seguro. Saber ler os dois é o melhor de tudo.
O que você quer Recomendado Exemplo
Definir toda a permissão de uma vez numérico chmod 644 file
Adicionar ou remover do atual simbólico chmod u+x file
Alterar sem mexer nos outros simbólico chmod g+w file
Restringir chave privada ao dono numérico chmod 600 id_rsa
Remover execução de todos simbólico chmod a-x file

Regra prática

  • Apenas adicionar execução a um script --> chmod +x script.sh (omitir o público atinge todos, mas o umask continua valendo; em uma configuração padrão o resultado bate com a+x)
  • Redefinir um arquivo de configuração para permissões padrão --> chmod 644 config.yaml

5. Acidentes comuns e o padrão seguro

Conclusão: chmod 777 concede "tudo para todos" e é perigoso. O padrão seguro é dar apenas a permissão mínima necessária.

5-1. Lina se enrola: o chmod 444 trancou ela do lado de fora

Lina: Eu não queria que ninguém editasse minhas anotações, então rodei chmod 444 notes.txt. Agora nem eu consigo salvar minhas próprias edições.
$ chmod 444 notes.txt
$ ls -l notes.txt
-r--r--r-- 1 user user 42 Jun  5 10:20 notes.txt
Lina: Espera, o arquivo é meu. Eu achava que o dono fosse um caso especial.
Veterano Linny: A mesma regra vale para o dono. 444 é 4+0+0, então os três públicos ficam só com r. O w do dono saiu junto.
Lina: Então, no momento em que escolhi o 4, eu tirei a minha própria escrita.
Veterano Linny: Exatamente. Para leitura e escrita só do dono, use 600. O 6 é 4+2, ou seja, rw-.
Lina: Agora faz sentido. Antes de digitar os números, vou dizer em voz alta quantos pontos o dono precisa.
$ chmod 600 notes.txt
$ ls -l notes.txt
-rw------- 1 user user 42 Jun  5 10:21 notes.txt

Tirar permissão demais nunca apaga o conteúdo. Rodar o chmod de novo devolve o acesso.

Lina: Em outra vez eu coloquei 777. Começou a funcionar, então achei que estava tudo bem.
Veterano Linny: Funciona, mas fica totalmente aberto. Primeiro veja a permissão atual com ls -l. Depois adicione apenas o que está faltando.
Veterano Linny: Se você só não consegue executar, chmod u+x basta. 777 quase nunca tem uso real.

Cuidado com x em diretórios

Para um diretório, x é a permissão de entrar nele. Pense se o cd funciona ou não. Apenas com r, você lista o diretório mas não entra.

Por isso diretórios costumam usar 755 (rwxr-xr-x).

O padrão seguro são estes três passos:

  1. Verifique a permissão atual com ls -l
  2. Decida "quem está faltando ou tem excesso de que"
  3. Adicione apenas o mínimo necessário, como chmod u+x

6. Mini Desafios: Pratique Agora

Conclusão: Três desafios - calcular os dígitos, somar com o modo simbólico e confirmar que as duas notações batem.

Lina: O conteúdo entrou. Quero testar na mão.
Veterano Linny: Boa. Preparei três desafios. Antes, crie um diretório de prática e um arquivo descartável. Assim um erro não custa nada.
$ mkdir -p ~/chmod-practice && cd ~/chmod-practice
$ touch demo.txt
$ ls -l demo.txt
-rw-r--r-- 1 user user 0 Jun  5 10:10 demo.txt

Desafio 1: Deixe demo.txt legível e gravável somente para o dono. Use o modo numérico.

Ver Dica 1 (Direcionamento)

Some as pontuações de cada público. O dono precisa de duas coisas: leitura e escrita. Grupo e outros não recebem nada.

A pontuação de "nada" é 0.

Ver Dica 2 (Nome do comando)

Use chmod. r é 4 e w é 2, então o dígito do dono é 4+2. Os outros dois dígitos são 0.

Confira o resultado com ls -l.

Ver Resposta
$ chmod 600 demo.txt
$ ls -l demo.txt
-rw------- 1 user user 0 Jun  5 10:11 demo.txt

O 6 é 4+2, ou seja, rw-. O 0 significa nenhuma permissão e aparece como ---.

Desafio 2: Adicione a execução para o dono de demo.txt. Mantenha as permissões que já estão lá.

Ver Dica 1 (Direcionamento)

Esta é uma situação de "somar um pouco ao estado atual". Você não precisa escrever o estado final inteiro.

Só o dono é afetado.

Ver Dica 2 (Nome do comando)

Use chmod. O público é u, a ação é + e a permissão é x. Escreva os três juntos.

Ver Resposta
$ chmod u+x demo.txt
$ ls -l demo.txt
-rwx------ 1 user user 0 Jun  5 10:12 demo.txt

Leitura e escrita continuaram. Só a execução foi somada. Em modo numérico, esse estado é 700.

Desafio 3: Produza o mesmo rw------- usando somente o modo simbólico. Ele precisa chegar lá seja qual for a permissão atual.

Ver Dica 1 (Direcionamento)

Aqui não é somar nem tirar. Use o símbolo que limpa as permissões atuais e depois define.

Pense em dois estágios: primeiro esvaziar todos, depois dar ao dono.

Ver Dica 2 (Nome do comando)

Use chmod. O símbolo que limpa e define é o =. Todos é a e o dono é u.

Duas especificações podem ser listadas com uma vírgula entre elas.

Ver Resposta
$ chmod a=r demo.txt
$ chmod u=rw demo.txt
$ ls -l demo.txt
-rw-r--r-- 1 user user 0 Jun  5 10:13 demo.txt

A primeira linha deixa todo mundo somente com leitura. A segunda devolve a escrita apenas ao dono.

O = limpa as permissões atuais antes de definir, então dividir em dois passos não arrasta o estado intermediário.

Em uma máquina Linux real, dá para juntar em uma linha com vírgula. Essa forma chega em rw-------, igual ao 600.

$ chmod a=,u=rw demo.txt

O terminal virtual deste site aceita uma especificação por vez.

Se tiver tempo, teste chmod 755 demo.txt e depois chmod u=rwx seguido de chmod go=rx. Em uma máquina real, a forma com vírgula chmod u=rwx,go=rx demo.txt dá o mesmo resultado.

7. Revisão

Lina: Vou resumir. r é 4, w é 2 e x é 1. Somo por público e alinho três dígitos.
Veterano Linny: Isso, na ordem dono, grupo, outros.
Lina: E o 444 me trancou do lado de fora porque tirou o w do dono.
Veterano Linny: Boa memória. Rode ls -l antes de mudar qualquer coisa. Só esse hábito evita quase todos esses enganos.

Resumo em 3 Linhas

  1. Somar r=4, w=2 e x=1 produz o modo numérico. A ordem é dono, grupo, outros
  2. O modo simbólico é um conjunto de três: quem (u/g/o/a), como (+/-/=) e o que (r/w/x)
  3. Escolha o numérico quando o estado final já está decidido e o simbólico quando você soma ou tira a partir de agora

Tabela de Resumo

O que você quer Modo numérico Modo simbólico
Arquivo normal chmod 644 file chmod u=rw,go=r file
Script executável chmod 755 file chmod u=rwx,go=rx file
Adicionar execução (precisa da spec completa) chmod u+x file
Remover escrita (precisa da spec completa) chmod go-w file
Chave privada chmod 600 file chmod a=,u=rw file

As formas simbólicas unidas por vírgula são para uma máquina Linux real. No terminal virtual deste site, execute uma especificação por vez.

Três coisas para lembrar

  1. r=4 w=2 x=1: a soma permite ler e escrever o modo numérico
  2. u/g/o/a e +/-/=: o modo simbólico é "quem, como, o que"
  3. Numérico para o estado final, simbólico para adicionar/remover: escolha pelo objetivo

Próximas Leituras