Anúncios incomodam? Ir Sem anúncios Hoje

chmod em linguagem simples — Por que todos escrevem 755 sem saber o que significa

Atualizado em

755, 644, 777 — você já digitou essas combinações dezenas de vezes. Aqui está o que elas realmente significam, por que chmod 777 é pobre e não malvado, e em quais casos cada valor é realmente a escolha certa.

chmod em linguagem comum — Por que todos escrevem 755 sem saber o que significa 1
ANUNCIADO Remover?

Em algum momento cedo na sua carreira, alguém disse para você executar chmod 755 em um diretório ou chmod 644 em um arquivo de configuração. Funcionou. Você prosseguiu. Agora, anos depois, você ainda digita esses mesmos números com memória muscular — e se alguém perguntar para você explicar o que significa realmente 755, você faz um gesto vago para a tela e diz: “é só uma coisa padrão de permissões”.

Isso está bem, até que não esteja. O momento em que você precisa depurar um erro de permissão negada, decide o que colocar em um novo script ou explica a um desenvolvedor junior por que chmod 777 não é a solução para tudo — é então que a memória muscular não é suficiente.

Aqui está o que os números realmente significam.

A Estrutura de Bits

As permissões de arquivos Unix são três conjuntos de três bits. Isso é tudo. Cada conjunto controla o que um grupo de usuários pode fazer — dono, grupo, outros — e cada bit dentro de um conjunto mapeia para leitura, escrita ou execução.

Os valores são: leitura = 4, escrita = 2, execução = 1. Você soma esses valores para cada conjunto. Assim, 7 significa leitura + escrita + execução (4+2+1). 5 significa leitura + execução (4+1). 4 significa leitura apenas.

Descomponha 755: o dono recebe 7 (rwx), o grupo recebe 5 (r-x), os outros recebem 5 (r-x). Em binário: 111 101 101. Na notação simbólica: rwxr-xr-x. O padrão que você tem digitado por anos é apenas “o dono pode fazer tudo, todos os outros podem ler e executar, mas não escrever”.

Lendo a saída do ls -la

Execute ls -la em qualquer diretório e você obtém algo assim:

drwxr-xr-x  2 deploy www-data 4096 May 29 10:00 public_html
-rw-r--r--  1 deploy www-data 2341 May 29 09:45 config.php
-rwx------  1 deploy deploy    891 May 28 14:20 deploy.sh
-rw-------  1 deploy deploy    411 May 10 08:30 .env

O primeiro caractere é o tipo de arquivo: d para diretório, - para arquivo regular, l para link simbólico. Depois vêm três grupos de três caracteres — dono, grupo, outros. Um traço significa que a permissão está ausente.

O número após as permissões é o contador de links rígidos. Depois vem o nome do dono, o nome do grupo, o tamanho do arquivo em bytes, a marcação de modificação e, finalmente, o nome do arquivo.

Assim, drwxr-xr-x 2 deploy www-data significa: diretório, dono (deploy) pode ler, escrever e executar, grupo (www-data) pode ler e navegar, mas não escrever, todos os outros podem ler e navegar, mas não escrever. Dois links rígidos. Isso é seu diretório padrão de web.

Valores Comuns de Permissão e Por Que Eles Existem

Aqui está a divisão dos valores que você usará realmente, o que eles significam e em que situações usar cada um:

ValorSimbólicoBinárioComo corrigirQuando usá-lo
755rwxr-xr-x111 101 101Dono: completo. Grupo/Outros: leitura + execuçãoDiretórios, executáveis públicos, scripts servidos pela web
644rw-r–r–110 100 100Dono: leitura + escrita. Grupo/Outros: leitura apenasArquivos de configuração, ativos estáticos, HTML, arquivos de fonte PHP
600rw——-110 000 000Dono: leitura + escrita. Todos os outros: nadaChaves SSH (~/\.ssh/id_rsa), arquivos .env
700rwx——111 000 000Dono: completo. Todos os outros: nadaScripts que contêm segredos, executáveis privados
777rwxrwxrwx111 111 111Todos: acesso completo/tmp, diretórios de espaço temporário em contêineres — quase nunca em outro lugar

A razão pelos diretórios precisarem de permissão de execução é que “executar” em um diretório significa “navegar” — a capacidade de entrar no diretório e acessar seus conteúdos. Se um diretório é r--r--r--, você pode listar os nomes dos arquivos dentro, mas não pode acessá-los. Você precisa do bit x para cd nele ou abrir arquivos. É por isso que 755 e não 744 para diretórios.

Se você quiser trabalhar com esses valores de forma interativa, o Calculador de chmod no IO Tools permite que você ative bits individuais e veja os valores octais e simbólicos atualizados em tempo real — útil quando você precisa construir um valor de permissão desconhecido.

Notação Simbólica: Quando Usar Em vez de Octal

A notação octal define todas as permissões de uma vez. A notação simbólica permite mudanças incrementais. Ambas são válidas — a escolha depende do que você está fazendo.

chmod u+x script.sh adiciona permissão de execução para o dono sem tocar nada mais. Se o arquivo estiver atualmente 644, isso torna-o 744. Se você usasse notação octal e escrevesse chmod 744 script.sh, você obteria o mesmo resultado — mas você precisaria saber o estado atual primeiro.

Os operadores simbólicos são simples: + adiciona uma permissão, - remove-a, = define exatamente. Os alvos são u (usuário/dono), g (grupo), o (outros), a (os três).

chmod u+x deploy.sh          # add execute for owner
chmod g-w config.php         # remove write from group
chmod o=r public/index.html  # set others to read-only exactly
chmod a+r shared.txt         # add read for everyone

Use a notação simbólica quando quiser mudar uma permissão sem redefinir tudo o que já está lá. Use a notação octal quando estiver definindo permissões do zero ou quiser controle absoluto sobre o estado final.

Por que arquivos novos não começam com 666 por padrão

Crie um novo arquivo com um editor de texto ou touch e você obterá 644. Crie um diretório e você obterá 755. De onde vêm esses valores padrão?

Arquivos começam com um valor teórico máximo de 666 (sem execução por padrão — isso precisa ser definido explicitamente). Diretórios começam com 777. O valor umask subtrai de tais máximos.

O valor padrão do umask em sistemas Linux é 022. Aplicado a um arquivo: 666 – 022 = 644. Aplicado a um diretório: 777 – 022 = 755. É por isso que 644 e 755 parecem os valores padrão — eles são, mecanicamente.

Execute umask com nenhum argumento para ver o valor atual. Mude isso no seu arquivo de perfil de shell se precisar de padrões mais rígidos — umask 027 dá arquivos 640 e diretórios 750, removendo todas as permissões para “outros” e permitindo apenas leitura para o grupo.

chmod 777: Não é Mal, É Pobre

Aqui está a visão honesta sobre chmod 777: não é uma catástrofe de segurança em todos os contextos. Raramente é a resposta correta em produção, e as pessoas o usam porque faz com que o erro de permissão desapareça sem que precise pensar.

Em um servidor compartilhado, chmod 777 em um diretório escrevível significa que qualquer processo executado por qualquer usuário — incluindo uma aplicação web comprometida — pode escrever nesse diretório. Isso é uma superfície real de ataque. É também exatamente o tipo de coisa que permanece em produção para sempre porque “vamos resolver depois”.

Uso apropriado do 777:

  • /tmp em um contêiner temporário — nada persiste, nada importa, vá adiante
  • Depuração de um problema de permissão em desenvolvimento — use para confirmar se é um problema de permissão e não de algo mais, depois defina o valor correto
  • Diretórios de espaço temporário em uma máquina com apenas um usuário confiável — se você é o único usuário, a permissão “outros” é acadêmica

O fluxo diagnóstico é: você encontra um erro de permissão negada, aplica temporariamente 777 para confirmar se é um problema de permissão e não de algo mais, depois descobre qual é a permissão correta e define essa valor. chmod 777 como ferramenta diagnóstica é aceitável. chmod 777 em um script de deploy que ninguém revisa é como quebra de segurança acontece.

Os valores que vale a pena conhecer

Você não precisa memorizar todas as combinações possíveis. Esses quatro cobrem cerca de 95% de casos do mundo real:

  • 755 — diretórios e executáveis que devem ser acessíveis publicamente
  • 644 — arquivos que devem ser lidos por todos, mas apenas escritos pelo dono
  • 600 — arquivos sensíveis: chaves SSH, credenciais, arquivos .env. O SSH recusará usar uma chave privada que não seja 600 ou mais rígida.
  • 700 — scripts que executam com segredos internos e que não devem ser executados por ninguém mais

Quando você encontrar algo fora desse intervalo, trabalhe com a estrutura de bits: decida o que o dono, o grupo e os outros precisam fazer, some os bits, escreva o número. O Calculadora Chmod é útil aqui se você preferir não fazer cálculos mentais sob pressão.

O modelo de permissões é uma das coisas no Unix que parece arbitrário até que você entenda que é apenas adição binária. Assim que isso bate, você para de seguir o cargo-culto de comandos chmod de outras pessoas e começa a definir permissões intencionalmente — que é o ponto.

Quer eliminar anúncios? Fique sem anúncios hoje mesmo

Instale nossas extensões

Adicione ferramentas de IO ao seu navegador favorito para acesso instantâneo e pesquisa mais rápida

Ao Extensão do Chrome Ao Extensão de Borda Ao Extensão Firefox Ao Extensão Opera

O placar chegou!

Placar é uma forma divertida de acompanhar seus jogos, todos os dados são armazenados em seu navegador. Mais recursos serão lançados em breve!

ANUNCIADO Remover?
ANUNCIADO Remover?
ANUNCIADO Remover?

Notícias com destaques técnicos

Envolver-se

Ajude-nos a continuar fornecendo ferramentas gratuitas valiosas

Compre-me um café
ANUNCIADO Remover?