chmod: Modos Numerico e Simbolico de Permissoes

chmod: Modos Numerico e Simbolico de Permissoes

Quais sao as "duas formas de escrever" do chmod?

Lina: Linny-senpai, eu pesquisei sobre chmod e alguns artigos escrevem chmod 644 enquanto outros escrevem chmod u+x. Qual esta correto?
Veterano Linny: Os dois estao corretos! O chmod tem duas notacoes: o modo numerico, onde voce define tudo de uma vez com digitos, e o modo simbolico, onde voce usa letras como u+x. Eles simplesmente expressam a mesma coisa de formas diferentes.
Lina: Entao... eu tenho que memorizar o dobro?
Veterano Linny: Nao se preocupe. Depois de ver como funcionam, voce vai perceber que usar os dois e na verdade mais facil. Hoje vamos aprender como escolher o certo.

O chmod altera as permissoes de arquivos e diretorios. Voce pode especifica-las com modo numerico (digitos como 644) ou modo simbolico (letras como u+x). Ambos podem definir exatamente as mesmas permissoes.

Em uma linha

  • Modo numerico --> quando voce quer definir toda a permissao "de uma so vez" (chmod 644 file)
  • Modo simbolico --> quando voce quer "adicionar ou remover apenas um pouco" do estado atual (chmod u+x file)

O Que Voce Vai Aprender

  • Que o modo numerico (644, 755) e o modo simbolico (u+x, go-w) descrevem as mesmas permissoes
  • Como calcular o modo numerico usando r=4, w=2, x=1
  • Como montar o modo simbolico com u/g/o/a e +/-/=
  • Como escolher entre "definir tudo" e "adicionar/remover um pouco"
  • Um padrao seguro que evita acidentes como chmod 777

1. A base compartilhada: rwx e tres publicos

Conclusao: Permissoes concedem leitura (r), escrita (w), execucao (x) ao dono (u), grupo (g) e outros (o). Tanto o numerico quanto o simbolico apenas descrevem isso.

Lina: Honestamente, quando o ls -l mostra algo como rwxr-xr-x, parece um feitico para mim...
Veterano Linny: Leia em blocos de tres. O primeiro rwx e o dono, o proximo r-x e o grupo, o ultimo r-x e todos os outros. r significa ler, w significa escrever, x significa executar.
$ ls -l script.sh
-rwxr-xr-x 1 user user 128 Jun  5 10:00 script.sh
Posicao Publico Letra Neste exemplo Significado
caracteres 1-3 dono u (user) rwx ler, escrever, executar
caracteres 4-6 grupo g (group) r-x ler e executar
caracteres 7-9 outros o (other) r-x ler e executar

a (all) e um atalho que significa "u + g + o juntos." Vamos usa-lo mais adiante.

2. Modo simbolico: pense em adicionar e remover

Conclusao: O modo simbolico e "quem (u/g/o/a) + como (+/-/=) + o que (r/w/x)." Ele altera a partir do estado atual, entao a intencao fica clara.

O modo simbolico combina tres 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 / execucao

2-1. Adicionar execucao para o dono

$ chmod u+x script.sh

u (dono) mais + (adicionar) mais x (executar). Agora so voce pode executa-lo.

2-2. Remover escrita do grupo e outros

$ chmod go-w secret.txt

g e o (grupo e outros), - (remover), w (escrita). Voce pode apontar para multiplos publicos de uma vez.

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

$ chmod a=r notes.txt

a (todos), = (definir), somente r. = limpa as permissoes atuais primeiro e depois as define, entao mesmo que escrita ou execucao estivessem presentes, o resultado e garantidamente "somente leitura."

Lina: Qual a diferenca entre + e =?
Veterano Linny: +r significa "adicionar leitura ao que ja existe." =r significa "deixar somente leitura (remover o resto)." Quando voce quer ter certeza de que a execucao foi removida, = e pratico.

Voce pode combinar especificacoes com virgulas: chmod u+x,go-w file adiciona execucao para o dono e remove escrita do grupo e outros em um unico comando.

3. Modo numerico: a matematica r=4 w=2 x=1

Conclusao: O modo numerico soma r=4, w=2, x=1 em um unico digito, depois alinha tres digitos para dono, grupo e outros. 644 e dono rw, outros r.

Lina: Como os digitos sao decididos? De onde vem o 6 em 644?
Veterano Linny: Cada permissao tem uma pontuacao: r e 4, w e 2, x e 1. Basta somar. rw- e 4+2=6, r-- e 4. Entao dono 6, grupo 4, outros 4 resulta em 644.

Memorize a pontuacao de cada permissao.

Permissao Pontuacao
r (leitura) 4
w (escrita) 2
x (execucao) 1

Cada digito representa as permissoes de um publico, alinhados como dono, grupo, outros.

Digito Soma Letras Significado
7 4+2+1 rwx tudo
6 4+2 rw- leitura e escrita
5 4+1 r-x leitura e execucao
4 4 r-- somente leitura
0 0 --- sem permissao

3-1. Combinacoes numericas 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
Numerico Letras Uso comum
644 rw-r--r-- arquivo normal (so o dono edita)
755 rwxr-xr-x scripts e diretorios
600 rw------- chaves privadas, arquivos de senha
700 rwx------ diretorio somente do dono

Dica para leitura: leia 755 um digito por vez como "7=rwx, 5=r-x, 5=r-x." Com r=4 w=2 x=1 memorizado, voce pode transitar livremente entre letras e digitos.

4. Qual usar? Um padrao para escolher

Conclusao: Use numerico para "definir toda a permissao," simbolico para "adicionar ou remover um pouco do estado atual." Escolha aquele cuja intencao fica mais clara.

Lina: No final das contas, qual devo usar na pratica?
Veterano Linny: Decida pelo seu objetivo e voce nao vai hesitar. Se voce sabe a permissao final que quer, o numerico e rapido. Se voce esta alterando a partir do estado atual, como "apenas adicionar execucao," o simbolico e mais seguro. Poder ler ambos e o melhor de tudo.
O que voce quer Recomendado Exemplo
Definir toda a permissao de uma vez numerico chmod 644 file
Adicionar ou remover do atual simbolico chmod u+x file
Alterar sem mexer nos outros simbolico chmod g+w file
Restringir chave privada ao dono numerico chmod 600 id_rsa
Remover execucao de todos simbolico chmod a-x file

Regra pratica

  • Apenas adicionar execucao a um script --> chmod +x script.sh (equivale a a+x)
  • Redefinir um arquivo de configuracao para permissoes padrao --> chmod 644 config.yaml

5. Acidentes comuns e o padrao seguro

Conclusao: chmod 777 concede "tudo para todos" e e perigoso. O padrao seguro e dar apenas a permissao minima necessaria.

Lina: Eu coloquei 777 porque comecou a funcionar, entao achei que estava tudo bem...
Veterano Linny: Funciona, mas fica totalmente aberto. Primeiro verifique a permissao atual com ls -l, depois adicione apenas o que esta faltando. Se voce so nao consegue executar, chmod u+x e suficiente. 777 quase nunca tem uso real.

Cuidado com x em diretorios

Para um diretorio, x e a permissao para "entrar nele (cd)." Apenas com r, voce pode listar mas nao entrar. Diretorios comumente usam 755 (rwxr-xr-x).

O padrao seguro sao estes tres passos:

  1. Verifique a permissao atual com ls -l
  2. Decida "quem esta faltando ou tem excesso de que"
  3. Adicione apenas o minimo necessario, como chmod u+x

6. Pratica (5 minutos)

Conclusao: Defina a mesma permissao em ambos os modos numerico e simbolico, depois confirme com ls -l que os resultados sao iguais.

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

Agora construa o mesmo rw------- em modo simbolico.

$ chmod a=,u=rw demo.txt
$ ls -l demo.txt
-rw------- 1 user user 0 Jun  5 10:11 demo.txt

O que verificar:

  • Confirme que 600 e a=,u=rw ambos produzem rw-------
  • Explique 6 = rw usando a soma r=4 w=2 x=1

Se tiver tempo, tente verificar se chmod 755 demo.txt e chmod u=rwx,go=rx demo.txt dao o mesmo resultado.

Resumo

O que voce quer Modo numerico Modo simbolico
Arquivo normal chmod 644 file chmod u=rw,go=r file
Script executavel chmod 755 file chmod u=rwx,go=rx file
Adicionar execucao (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

Tres coisas para lembrar

  1. r=4 w=2 x=1: a soma permite ler e escrever o modo numerico
  2. u/g/o/a e +/-/=: o modo simbolico e "quem, como, o que"
  3. Numerico para o estado final, simbolico para adicionar/remover: escolha pelo objetivo

Proximas Leituras