chmod no Linux: permissões rwx e os números 755, 644 e 600

Aprenda como funcionam as permissões no Linux com chmod, o que significam r, w e x para owner, group e others, como ler a notação octal e quando usar valores como 755, 644 e 600, com os cuidados do 777.

Revisado pela equipe editorial ValorFinalDocumentação GNU coreutils (chmod) / man pages Linux
Calcule agora: Ferramentas DevOpsResultado na hora, de graça e sem cadastro.

No Linux, cada arquivo e pasta tem permissões que definem quem pode ler, escrever e executar. O comando chmod (change mode) é o que ajusta essas permissões. Entender chmod evita dois extremos comuns: o erro de permissão que trava um deploy e o exagero de liberar tudo com 777, que cria risco de segurança. Neste guia você aprende a ler a saída do ls -l, a montar o octal (755, 644, 600), a usar a notação simbólica, os bits especiais setuid, setgid e sticky, a umask e os erros que mais aparecem no dia a dia. Para montar e conferir permissões na prática, use as ferramentas DevOps, que calculam o octal e o simbólico localmente.

Resposta rápida

  • r=4, w=2, x=1; somados por classe (dono, grupo, outros) formam o octal.
  • 755 (rwxr-xr-x) para pastas e executáveis; 644 (rw-r--r--) para arquivos comuns.
  • 600 (rw-------) para arquivos privados (chaves SSH, credenciais); 700 para a pasta ~/.ssh.
  • Evite 777: libera escrita a todos. Comece pelo mínimo e abra só o necessário.

O que é chmod

chmod altera o modo de acesso de um item do sistema de arquivos. Ele aceita as permissões de duas formas: pela notação octal (três números, como 644) ou pela notação simbólica (como u+x para adicionar execução ao dono). As duas chegam ao mesmo resultado. A octal é mais comum em scripts e documentação por ser compacta; a simbólica é melhor para mexer em um bit sem recalcular o resto. O comportamento do comando está definido no padrão POSIX e vale igual em Linux, macOS e BSD, com pequenas diferenças de opções entre as implementações.

Como ler a saída do ls -l

Antes de mudar permissão, aprenda a ler o que já existe. Rode ls -l e observe uma linha típica:

-rwxr-xr-x 1 maria devs 2048 jul 18 10:30 deploy.sh

O primeiro caractere indica o tipo do item: hífen para arquivo comum, d para diretório, l para link simbólico (há outros, como b e c para dispositivos). Os nove caracteres seguintes são as permissões em três trios: os três primeiros são do dono (rwx), os três do meio são do grupo (r-x) e os três finais são dos outros (r-x). Depois vêm o número de links, o dono (maria) e o grupo (devs). Nesse exemplo, maria pode tudo; quem está no grupo devs e todo o resto pode ler e executar, mas não alterar. Para ver a permissão de uma pasta em si, e não do conteúdo dela, use ls -ld pasta.

Dono, grupo e outros

As permissões são divididas em três classes, sempre nesta ordem:

O sistema decide qual trio aplicar na ordem: se você é o dono, valem as permissões do dono; senão, se pertence ao grupo, valem as do grupo; senão, valem as dos outros. Só uma classe é aplicada por vez. Um detalhe que surpreende: se o dono tem 0 e os outros têm 7, o próprio dono fica sem acesso, porque a classe dele é avaliada primeiro.

Permissões r, w e x

Cada classe tem três permissões. Em arquivos, r deixa ler o conteúdo, w deixa modificar e x deixa executar como programa. Em pastas, r deixa listar os nomes, w deixa criar e remover itens, e x deixa entrar na pasta e acessar o que há dentro. Essa diferença é a causa de muitos erros: uma pasta sem x fica inacessível, mesmo com r. E como apagar um arquivo é uma operação na pasta (remover o nome dela), quem tem w na pasta consegue apagar arquivos que não pode nem ler.

A notação octal completa

Some os valores das permissões de cada classe: leitura vale 4, escrita vale 2 e execução vale 1. O resultado é um dígito de 0 a 7. A tabela cobre as oito combinações possíveis:

OctalSimbólicoPermissões
7rwxler, escrever, executar
6rw-ler, escrever
5r-xler, executar
4r--somente ler
3-wxescrever, executar
2-w-somente escrever
1--xsomente executar
0---nenhuma permissão

Na prática, os dígitos 1, 2 e 3 quase não aparecem em arquivos comuns: executar sem poder ler só faz sentido em casos raros, e escrever sem ler é usado em situações bem específicas, como caixas de depósito. O repertório real do dia a dia gira em torno de 0, 4, 5, 6 e 7.

A notação simbólica: u, g, o, a e os operadores

A forma simbólica indica quem (u para dono, g para grupo, o para outros, a para todos), a operação (+ adiciona, - remove, = define exatamente) e a permissão (r, w, x). Dá para combinar várias cláusulas separadas por vírgula. Exemplos que cobrem quase tudo:

O = merece atenção: ele substitui o trio inteiro da classe. Um chmod u=r arquivo tira a escrita e a execução do dono, mesmo que você só quisesse garantir a leitura. Quando a intenção é adicionar sem apagar, fique no +.

O que significa chmod 755

755 é rwxr-xr-x. O dono tem controle total; grupo e outros podem ler e executar, mas não escrever. É o padrão de pastas e de executáveis, porque todos precisam acessar, mas só o dono deve modificar. Num servidor web típico, as pastas do site ficam em 755 para que o processo do servidor consiga atravessá-las.

O que significa chmod 644

644 é rw-r--r--. O dono lê e escreve; grupo e outros apenas leem. É a permissão típica de arquivos comuns, como páginas, imagens e documentos servidos por um site, onde ninguém além do dono deve alterar o conteúdo. Repare que 644 não tem x: um HTML não precisa ser executável, e um script de shell com 644 falha com erro de permissão até receber o bit x.

O que significa chmod 600 e 700

600 é rw-------: apenas o dono lê e escreve, e mais ninguém tem acesso. É a permissão exigida para arquivos privados, como chaves SSH, arquivos .env com senhas e credenciais de banco. 700 é a versão para pastas privadas (rwx------), como a ~/.ssh, em que o dono precisa do x para entrar. A dupla 600 no arquivo e 700 na pasta resolve a maioria dos casos de segredo local.

Pasta compartilhada de equipe: 664 e 775

Quando um grupo de pessoas edita os mesmos arquivos, a escrita do grupo entra em cena: 664 (rw-rw-r--) para arquivos e 775 (rwxrwxr-x) para pastas permitem que qualquer membro do grupo modifique, enquanto os demais usuários só leem. Esse par costuma vir acompanhado do bit setgid na pasta, explicado adiante, para que os arquivos novos já nasçam com o grupo certo.

Valores de permissão mais usados

OctalSimbólicoUso típico
755rwxr-xr-xPastas e executáveis
750rwxr-x---Pastas visíveis só ao grupo
644rw-r--r--Arquivos comuns (web)
640rw-r-----Arquivos legíveis só pelo grupo
664rw-rw-r--Arquivos editáveis pelo grupo
775rwxrwxr-xPastas de trabalho em equipe
700rwx------Pastas privadas (~/.ssh)
600rw-------Chaves SSH, credenciais
777rwxrwxrwxEvite (libera escrita a todos)

Exemplos práticos

chmod -R: o recursivo e o perigo do x

A opção -R aplica a permissão em toda a árvore de pastas. Ela é útil e traiçoeira ao mesmo tempo, porque pastas e arquivos precisam de coisas diferentes. Um chmod -R 644 site/ tira o x das pastas e torna tudo inacessível. Um chmod -R 755 site/ resolve o acesso, mas marca cada HTML e imagem como executável, o que suja o sistema e dispara alertas em auditorias de segurança.

A saída elegante é o X maiúsculo da notação simbólica: chmod -R u=rwX,go=rX site/. O X só concede execução a diretórios e a arquivos que já tinham x para alguma classe. Ou seja: as pastas ganham o x de que precisam e os arquivos comuns continuam sem execução. Quando preferir octal puro, separe os alvos com find:

Pense duas vezes antes de qualquer recursivo em pastas do sistema. Um chmod -R errado em /etc ou /usr pode exigir restauração do sistema, porque muitos programas conferem as próprias permissões e se recusam a rodar quando elas mudam.

setuid, setgid e sticky bit: o quarto dígito

Além dos nove bits de rwx, existem três bits especiais, escritos como um quarto dígito na frente do octal: 4 para setuid, 2 para setgid e 1 para o sticky bit. Eles mudam o comportamento do arquivo ou da pasta, não só o acesso.

setuid (4xxx) faz um executável rodar com a identidade do dono do arquivo, e não de quem o chamou. O exemplo clássico é o /usr/bin/passwd, que aparece no ls -l como -rwsr-xr-x (o s no lugar do x do dono, octal 4755): qualquer usuário troca a própria senha, mas o programa precisa de root para gravar no arquivo de senhas do sistema. Não coloque setuid em scripts: o kernel do Linux ignora o bit em scripts interpretados, justamente por risco de segurança.

setgid (2xxx) tem dois usos. Em executável, roda com o grupo do arquivo. Em pasta, o efeito é mais útil no dia a dia: os arquivos criados ali herdam o grupo da pasta, e não o grupo primário de quem criou. É a receita da pasta de equipe: chmod 2775 /srv/projetos (ou chmod g+s numa pasta que já é 775) garante que tudo que nascer dentro pertença ao grupo do time.

sticky bit (1xxx) em pasta restringe a exclusão: mesmo com escrita liberada, cada usuário só apaga os próprios arquivos (o dono da pasta e o root apagam qualquer um). O /tmp é o caso canônico: drwxrwxrwt, octal 1777. Todos gravam ali, mas ninguém apaga o arquivo temporário do vizinho. Na notação simbólica, o bit entra com chmod +t pasta.

Uma curiosidade de leitura: s e t minúsculos indicam o bit especial com o x presente por baixo; S e T maiúsculos indicam o bit especial sem o x, o que quase sempre é um erro de configuração.

umask: de onde vem a permissão inicial

Você já deve ter notado que arquivos novos nascem 644 e pastas novas nascem 755 sem que ninguém rode chmod. Quem define isso é a umask, uma máscara que remove bits das permissões pedidas na criação. Arquivos comuns são criados a partir de 666 (programas normalmente não pedem x) e pastas a partir de 777. A conta, nos valores usuais, funciona como uma subtração dígito a dígito:

A rigor a umask é uma remoção de bits, não uma subtração aritmética, mas nos valores comuns as duas contas coincidem. O comando umask sem argumento mostra o valor atual; umask 027 altera a máscara da sessão, e a mudança permanente vai no perfil do shell (~/.profile ou ~/.bashrc). Conhecer a umask evita chmod corretivo em série depois de criar dezenas de arquivos.

chmod, chown e chgrp: permissão e dono são coisas diferentes

Permissão responde o que cada classe pode fazer; dono e grupo respondem quem cai em cada classe. Os comandos chown e chgrp mexem nesse segundo lado: sudo chown maria:devs relatorio.txt troca dono e grupo de uma vez, e chgrp devs relatorio.txt troca só o grupo. Trocar o dono exige root; o dono comum pode mudar o grupo do próprio arquivo para outro grupo do qual participe.

Muitos problemas atribuídos ao chmod são, na verdade, de dono. Num servidor web, se os arquivos pertencem ao usuário errado, nenhum 755 resolve direito: o caminho é sudo chown -R www-data:www-data /var/www/site e, depois, 755 nas pastas e 644 nos arquivos. Diagnostique com ls -l antes de sair abrindo permissão: a coluna do dono e do grupo diz em qual classe o processo do servidor está caindo.

Erros comuns e como resolver

chmod 777 como conserto universal. O 777 aparece em tutoriais antigos como solução rápida, e funciona no sentido de fazer o erro sumir. O custo é alto: qualquer usuário ou processo comprometido do sistema passa a poder alterar os arquivos, o que em servidores expostos vira vetor de invasão. Quando um 777 resolve, a causa real era outra: dono errado (resolva com chown), pasta sem x no caminho (resolva com 755 nas pastas) ou arquivo sem leitura para o processo certo (644 resolve). Identifique qual dos três é o seu caso e aplique o valor mínimo.

Chave SSH recusada. Ao conectar, o cliente mostra WARNING: UNPROTECTED PRIVATE KEY FILE! e algo como Permissions 0644 for id_ed25519 are too open, e ignora a chave. É proteção proposital: chave privada legível por outros usuários deixou de ser privada. Corrija com chmod 600 ~/.ssh/id_ed25519 e chmod 700 ~/.ssh. No servidor de destino, o authorized_keys em 600 e o home sem escrita de grupo também contam para o sshd aceitar o login por chave.

Script que não roda. O erro Permission denied ao chamar ./script.sh quase sempre é a falta do bit x. Um chmod u+x script.sh resolve. Se o arquivo veio de um zip ou de um download, ele costuma chegar sem execução, porque formatos como o zip nem sempre preservam permissões Unix.

Montagens do Windows e WSL. NTFS, FAT e exFAT não armazenam permissões POSIX. No WSL, os arquivos em /mnt/c aparecem como 777 e o chmod não muda nada, a menos que a montagem tenha a opção metadata configurada no /etc/wsl.conf. O mesmo vale para pendrives e HDs externos formatados para Windows montados no Linux: a permissão exibida é definida pelas opções de montagem, não pelo chmod. Se o projeto depende de permissões corretas (chaves SSH, scripts, git), mantenha os arquivos no sistema de arquivos nativo do Linux.

Vale lembrar que permissões clássicas são uma parte do controle de acesso. Existem também as ACLs (comandos getfacl e setfacl), que permitem regras por usuário específico, e módulos como SELinux e AppArmor por cima de tudo. Para o dia a dia, porém, rwx, as três classes, os bits especiais e a umask cobrem a grande maioria dos casos.

Quando usar a ferramenta do ValorFinal

Use as ferramentas DevOps para marcar as permissões e obter o octal e o simbólico na hora, além de validar ARN da AWS e gerar hash de arquivo. Para cálculo de redes, veja a calculadora de sub-rede IPv4. Conheça as demais ferramentas de tecnologia.

Fontes oficiais

Conclusão

Permissões no Linux se resumem a rwx para dono, grupo e outros, somados em octal (4+2+1). Saber que 755, 644 e 600 cobrem a maioria dos casos, que o X maiúsculo salva o chmod recursivo, que setgid e sticky bit resolvem pastas de equipe e /tmp, e que 777 é um risco evita tanto erros de acesso quanto brechas de segurança. Para montar e ler permissões na prática, use as ferramentas DevOps e conheça as demais ferramentas de tecnologia.

Calculadoras deste guia

Leia também

Fontes oficiais

Links externos para os documentos oficiais consultados na construção desta página. O conteúdo deles pode mudar sem aviso; em caso de divergência, vale sempre a fonte oficial.

Como validamos os cálculos

Os valores citados neste guia são estimativos e baseados em fontes oficiais (Documentação GNU coreutils (chmod) / man pages Linux). Eles podem variar conforme convenção coletiva, situação individual e atualizações da legislação. Entenda nossa metodologia em como validamos os cálculos.

Perguntas frequentes

O que é chmod no Linux?
chmod (change mode) é o comando que altera as permissões de um arquivo ou pasta no Linux e em outros sistemas Unix. Ele define quem pode ler, escrever e executar o item. As permissões são organizadas em três classes: o dono do arquivo, o grupo e os demais usuários (others).
O que significam r, w e x?
r é leitura (read), w é escrita (write) e x é execução (execute). Em um arquivo, x permite rodá-lo como programa. Em uma pasta, r permite listar o conteúdo, w permite criar e apagar itens, e x permite entrar na pasta e acessar os arquivos. Por isso pastas costumam precisar de x junto com r.
Como funciona a notação octal do chmod?
Cada conjunto de permissões vira um dígito de 0 a 7, somando 4 para leitura, 2 para escrita e 1 para execução. Assim, rwx é 7 (4+2+1), rw- é 6 (4+2) e r-x é 5 (4+1). O chmod recebe três dígitos, um para o dono, um para o grupo e um para os outros. Por exemplo, 750 dá tudo ao dono, leitura e execução ao grupo e nada aos demais.
O que significa chmod 755?
755 significa rwxr-xr-x: o dono pode ler, escrever e executar; o grupo e os outros podem ler e executar, mas não escrever. É a permissão típica de pastas e de programas, em que todos precisam acessar e executar, mas só o dono pode modificar.
Como dar permissão de execução a um arquivo?
Use chmod +x arquivo para adicionar o bit de execução, ou chmod u+x arquivo para dar execução só ao dono. Em octal, chmod 755 arquivo dá execução a todos e escrita só ao dono. Lembre que a pasta onde o arquivo está também precisa de x para que ele seja alcançado.
Qual a diferença entre chmod e chown?
chmod altera o que cada classe pode fazer com o arquivo (ler, escrever, executar). chown altera quem é o dono e o grupo do arquivo, e chgrp altera só o grupo. Os dois lados se completam: primeiro o sistema identifica em qual classe o usuário cai (dono, grupo ou outros), depois aplica as permissões daquela classe. Trocar o dono exige privilégio de root.
chmod 777 é perigoso?
Sim, na quase totalidade dos casos. 777 dá leitura, escrita e execução para todos os usuários do sistema, o que permite que qualquer processo altere ou substitua o arquivo. Em servidores, é uma porta aberta para invasão e defacement. O erro que o 777 esconde costuma ser dono errado, resolvido com chown, ou permissão de pasta sem x, resolvido com 755.
Por que minha chave SSH foi recusada por permissão?
Os clientes SSH recusam chave privada com permissão aberta demais e mostram avisos como UNPROTECTED PRIVATE KEY FILE. A chave privada deve ser 600 (rw-------) e a pasta ~/.ssh deve ser 700 (rwx------), acessíveis só pelo dono. Ajuste com chmod 600 ~/.ssh/id_ed25519 e chmod 700 ~/.ssh antes de tentar de novo.
O que é umask e como calcular a permissão resultante?
umask define quais bits de permissão são removidos de arquivos e pastas recém-criados. Arquivos partem de 666 e pastas de 777; a umask retira os bits marcados. Com umask 022, arquivos nascem 644 e pastas 755. Com umask 077, nascem 600 e 700. O comando umask sem argumento mostra o valor atual da sessão.
O que fazem setuid, setgid e sticky bit?
São bits especiais representados por um quarto dígito na frente do octal: 4 para setuid, 2 para setgid e 1 para sticky. setuid faz um executável rodar com o usuário dono do arquivo (caso do passwd). setgid em pasta faz os novos arquivos herdarem o grupo da pasta, útil em diretórios de equipe (2775). sticky bit em pasta impede que um usuário apague arquivos dos outros, como no /tmp (1777).
Existe diferença entre permissão de arquivo e de pasta?
Sim. Em arquivos, x significa poder executar. Em pastas, x significa poder entrar e acessar o conteúdo, e r significa poder listar os nomes. Uma pasta sem x fica inacessível mesmo com r. Por isso pastas usam tipicamente 755 ou 750, enquanto arquivos comuns usam 644.
Como aplicar permissões diferentes a pastas e arquivos de uma vez?
Use o X maiúsculo da notação simbólica: chmod -R u=rwX,go=rX pasta dá x às pastas (que sempre precisam) e só mantém x nos arquivos que já eram executáveis. Outra saída é separar com find: aplicar 755 apenas em diretórios e 644 apenas em arquivos. Um chmod -R 644 puro tira o x das pastas e quebra o acesso.
Por que o chmod parece não funcionar no Windows ou no WSL?
Sistemas de arquivos do Windows (NTFS, FAT, exFAT) não guardam permissões POSIX. No WSL, tudo que está em /mnt/c aparece como 777 e o chmod não tem efeito, a não ser que a montagem use a opção metadata no /etc/wsl.conf. Para trabalhar com permissões de verdade, mantenha os arquivos dentro do sistema de arquivos do Linux (por exemplo, no home do WSL).