Permissões de Arquivo Linux Explicadas: Um Guia Completo de chmod
Um guia completo sobre permissões de arquivo Unix — o modelo proprietário/grupo/outros, notação octal (755, 644, 777), notação simbólica, setuid/setgid/sticky bit e exemplos práticos para servidores web e chaves SSH.
Todo arquivo e diretório em um sistema Linux ou macOS carrega um conjunto de permissões que controla quem pode lê-lo, gravá-lo ou executá-lo. Definir essas permissões corretamente é a diferença entre um servidor seguro e um que vaza dados ou é comprometido. No entanto, a notação — chmod 755, saída do ls -la mostrando -rwxr-xr-- — pode parecer opaca até você entender o modelo por baixo. Este guia explica as permissões de arquivos Unix desde os primeiros princípios.
Você pode calcular valores de permissão e converter entre notação octal e simbólica instantaneamente com a Calculadora chmod do BrowseryTools — gratuita, sem cadastro, tudo roda no seu navegador.
O Modelo de Permissões Unix: Proprietário, Grupo, Outros
O Unix atribui a cada arquivo e diretório três conjuntos de permissões, cada um cobrindo um público diferente:
- Proprietário (user) — a conta de usuário dona do arquivo. Tipicamente o usuário que o criou.
- Grupo — um grupo nomeado de usuários. O arquivo pertence a um grupo; todos os membros desse grupo compartilham as permissões de grupo.
- Outros (world) — todos os demais no sistema que não são o proprietário nem estão no grupo.
Dentro de cada um desses três conjuntos, há três bits de permissão: leitura (r), escrita (w) e execução (x). Isso dá nove bits de permissão no total, que mapeiam diretamente para os nove caracteres que você vê após o indicador de tipo de arquivo na saída do ls -la.
Lendo a Saída do ls -la
Ao executar ls -la, cada linha começa com uma string de 10 caracteres como -rwxr-xr--. Veja como lê-la:
- rwx r-x r-- ^ ^^^ ^^^ ^^^ | | | └── outros: somente leitura | | └─────── grupo: leitura + execução | └──────────── proprietário: leitura + escrita + execução └─────────────── tipo: - = arquivo, d = diretório, l = symlink
Um traço - em uma posição de permissão significa que aquela permissão não foi concedida. Assim, r-x significa que leitura e execução são permitidas, mas escrita não.
O que Leitura, Escrita e Execução Significam para Arquivos vs Diretórios
Os três bits de permissão têm significados diferentes dependendo se se aplicam a um arquivo ou a um diretório:
- Leitura de arquivo (r) — pode ler o conteúdo do arquivo (
cat,less, abrir em um editor). - Escrita de arquivo (w) — pode modificar ou truncar o arquivo. Obs.: excluir um arquivo é controlado pela permissão de escrita do diretório pai, não pelo bit de escrita do próprio arquivo.
- Execução de arquivo (x) — pode executar o arquivo como programa ou script. Sem esse bit,
./script.shretorna "Permissão negada" mesmo que você possa lê-lo. - Leitura de diretório (r) — pode listar o conteúdo do diretório (
ls). Sem isso, você sabe que o diretório existe mas não pode ver o que há dentro. - Escrita de diretório (w) — pode criar, renomear ou excluir arquivos dentro do diretório. É por isso que você pode excluir um arquivo que não é seu se tiver acesso de escrita ao diretório pai.
- Execução de diretório (x) — pode entrar no diretório (
cd) e acessar arquivos dentro dele se souber os nomes. Às vezes chamado de "bit de busca". Um diretório comr--permite listar nomes de arquivos mas não acessá-los; um diretório com--xpermite acessar arquivos pelo nome mas não listá-los.
Notação Octal: 755, 644, 777
Cada conjunto de permissões (proprietário, grupo, outros) tem três bits. Três bits podem representar valores de 0 a 7 — exatamente um dígito octal. É por isso que as permissões são escritas como três dígitos octais, um por público:
Valores dos bits: r = 4, w = 2, x = 1 rwx = 4+2+1 = 7 r-x = 4+0+1 = 5 r-- = 4+0+0 = 4 --- = 0+0+0 = 0 chmod 755 → proprietário: 7 (rwx), grupo: 5 (r-x), outros: 5 (r-x) chmod 644 → proprietário: 6 (rw-), grupo: 4 (r--), outros: 4 (r--) chmod 600 → proprietário: 6 (rw-), grupo: 0 (---), outros: 0 (---)
Você nunca precisa memorizar cada combinação — use a Calculadora chmod do BrowseryTools para verificar o que qualquer valor octal significa ou para construir o valor certo para sua situação.
Notação Simbólica: u+x, g-w, o=r
O modo simbólico permite modificar permissões em relação ao estado atual, sem especificar todos os três conjuntos de uma vez. O formato é [quem][operador][permissões]:
- Quem:
u(proprietário/user),g(grupo),o(outros),a(todos os três) - Operador:
+(adicionar),-(remover),=(definir exatamente) - Permissões:
r,w,x
chmod u+x script.sh # adiciona execução apenas para o proprietário chmod g-w config.txt # remove escrita do grupo chmod o=r public.html # define outros como somente leitura exatamente chmod a+r file.txt # adiciona leitura para todos chmod u=rwx,g=rx,o= # equivalente a chmod 750
Padrões Comuns de Permissão Explicados
- 755 (
rwxr-xr-x) — Padrão para executáveis e diretórios. O proprietário pode fazer tudo; todos os demais podem ler e executar (ou entrar em um diretório) mas não gravar. O padrão para diretórios raiz de servidores web e scripts públicos. - 644 (
rw-r--r--) — Padrão para arquivos comuns. O proprietário pode ler/gravar; todos os demais só podem ler. Bom para assets web, arquivos de configuração sem segredos e a maioria do conteúdo estático. - 600 (
rw-------) — O proprietário pode ler/gravar; ninguém mais pode fazer nada. Obrigatório para chaves privadas SSH (~/.ssh/id_rsa). O SSH recusará usar um arquivo de chave com permissões mais permissivas. - 700 (
rwx------) — O proprietário pode fazer tudo; ninguém mais tem qualquer acesso. Bom para scripts privados e diretórios contendo dados sensíveis. - 400 (
r--------) — Somente leitura para o proprietário; completamente bloqueado para todos os demais. Usado para arquivos de configuração e certificados imutáveis onde gravações acidentais seriam prejudiciais.
Por que 777 é Perigoso
chmod 777 dá permissões de leitura, escrita e execução para todos os usuários do sistema. Isso significa que qualquer processo executando como qualquer usuário — incluindo uma aplicação web comprometida, um script malicioso em um ambiente de hospedagem compartilhada, ou qualquer outro usuário na máquina — pode modificar ou executar o arquivo. Em um contexto de servidor web, um arquivo PHP com permissões 777 permite que qualquer outro processo o sobrescreva com código malicioso. Nunca use 777 em produção. Se você está usando-o para "corrigir um erro de permissão," a correção real é dar ao usuário ou grupo certo a propriedade do arquivo.
Setuid, Setgid e Sticky Bit
Além dos nove bits padrão, há três bits especiais que aparecem como um quarto dígito inicial na notação octal de quatro dígitos:
- Setuid (4xxx) — quando definido em um executável, o programa roda com os privilégios do proprietário do arquivo, não do chamador.
/usr/bin/passwdusa isso para permitir que usuários comuns gravem em/etc/shadow, que pertence ao root. - Setgid (2xxx) — em um executável, roda com os privilégios de grupo do arquivo. Em um diretório, novos arquivos criados dentro herdam o grupo do diretório em vez do grupo primário do criador — útil para diretórios de projetos compartilhados.
- Sticky bit (1xxx) — em um diretório, impede que usuários excluam arquivos que não são seus, mesmo que tenham acesso de escrita ao diretório.
/tmptem o sticky bit definido (chmod 1777) para que usuários possam criar seus próprios arquivos temporários mas não excluir os dos outros.
chmod Recursivo (-R) e Exemplos Práticos
O flag -R aplica uma alteração de permissão recursivamente a um diretório e todo seu conteúdo. Use-o com cuidado — aplicar as mesmas permissões tanto a arquivos quanto a diretórios frequentemente está errado porque os diretórios precisam do bit de execução para poder ser acessados, enquanto arquivos comuns normalmente não devem ter execução:
# Servidor web: diretórios precisam de 755, arquivos precisam de 644
find /var/www/html -type d -exec chmod 755 {} ;
find /var/www/html -type f -exec chmod 644 {} ;
# Corrigir permissões de chave SSH
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 644 ~/.ssh/authorized_keys
# Tornar um script de deploy executável
chmod +x deploy.shQuando não tiver certeza de qual valor octal usar, a Calculadora chmod do BrowseryTools permite clicar em checkboxes para as permissões de proprietário, grupo e outros e imediatamente ver o valor octal e a notação simbólica resultantes.
Calculadora chmod Gratuita — Octal ↔ Simbólico ↔ Legível por Humanos
Abrir Calculadora chmod →Try the Tools — 100% Free, No Sign-Up
Everything runs in your browser. No uploads. No accounts. No ads.
Explore All Tools →