🔒
Ferramentas para Desenvolvedores
March 21, 20268 min readBy BrowseryTools Team

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.

chmodLinuxpermissões de arquivoUnixsegurançasysadmin

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.sh retorna "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 com r-- permite listar nomes de arquivos mas não acessá-los; um diretório com --x permite 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/passwd usa 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. /tmp tem 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.sh

Quando 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 →