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?
chmod. Alguns artigos escrevem chmod 644. Outros escrevem chmod u+x. Qual está correto?chmod tem duas notações.u+x. Eles dizem a mesma coisa com palavras diferentes.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
- PermissãoAs regras de acesso de leitura / escrita / execução definidas em um arquivo ou diretório.: é a configuração que decide quem pode fazer o que com um arquivo. "Direito de acesso" e "modo" são outros nomes para a mesma coisa.
- Modo numérico: é a notação de três dígitos, como
644. Também é chamado de "modo octal" ou "modo absoluto". - Modo simbólico: é a notação com letras, como
u+x. Também é chamado de "modo relativo".
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.
- 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) - Teste em um arquivo descartável, criado com
touch demo.txt - Rode
ls -lantes 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/ae+/-/= - 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.
ls -l mostra algo como rwxr-xr-x, parece um feitiço para mim.- é arquivo e d é diretório.rwx é o dono, o próximo r-x é o grupo e o último r-x é todos os outros.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.
+ e =?+r significa "adicionar leitura ao que já existe". =r significa "deixar somente leitura", então o resto sai.= é 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.
6 em 644?r é 4, w é 2 e x é 1.rw- é 4+2, ou seja, 6. r-- é 4.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.
| 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 oumaskcontinua valendo; em uma configuração padrão o resultado bate coma+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 777concede "tudo para todos" e é perigoso. O padrão seguro é dar apenas a permissão mínima necessária.
Um acidente frequente: chmod 777
$ chmod 777 file # rwxrwxrwx = qualquer um pode ler, escrever e executar
Definir 777 porque isso fez o Permission denied sumir é o pior padrão. Concede escrita e execução até para os outros. Isso abre uma falha de segurança.
5-1. Lina se enrola: o chmod 444 trancou ela do lado de fora
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
444 é 4+0+0, então os três públicos ficam só com r. O w do dono saiu junto.4, eu tirei a minha própria escrita.600. O 6 é 4+2, ou seja, rw-.$ 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.
777. Começou a funcionar, então achei que estava tudo bem.ls -l. Depois adicione apenas o que está faltando.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:
- Verifique a permissão atual com
ls -l - Decida "quem está faltando ou tem excesso de que"
- 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.
$ 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
r é 4, w é 2 e x é 1. Somo por público e alinho três dígitos.444 me trancou do lado de fora porque tirou o w do dono.ls -l antes de mudar qualquer coisa. Só esse hábito evita quase todos esses enganos.A limpeza usa o rm, e o rm é diferente de tudo aqui
Um arquivo removido com rm não vai para a lixeira como no modo gráfico. Ele some na hora e não pode ser recuperado.
-r: remove um diretório junto com o conteúdo-i: pergunta sobre cada item antes de remover
Com o -i, aparece uma confirmação para cada alvo. Digite y e aperte Enter para remover, ou digite n para manter.
Antes de apagar, confira sempre o caminhoUma sequência de texto que descreve a localização de um arquivo ou diretório. e o conteúdo com ls.
$ cd ~ $ ls ~/chmod-practice $ rm -ri ~/chmod-practice
O terminal virtual deste site é para aprender. Executar aqui não apaga nenhum arquivo do seu computador, então teste à vontade.
Resumo em 3 Linhas
- Somar
r=4,w=2ex=1produz o modo numérico. A ordem é dono, grupo, outros - O modo simbólico é um conjunto de três: quem (
u/g/o/a), como (+/-/=) e o que (r/w/x) - 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
- r=4 w=2 x=1: a soma permite ler e escrever o modo numérico
- u/g/o/a e +/-/=: o modo simbólico é "quem, como, o que"
- Numérico para o estado final, simbólico para adicionar/remover: escolha pelo objetivo