Calculadora de Chmod – permissões de arquivos no Linux
Converta as permissões de arquivos no Linux entre uma grade clicável de caixas de seleção, o código octal (ex.: 755) e a notação simbólica (ex.: rwxr-xr-x). Você recebe comandos chmod prontos para usar, uma prévia no estilo ls -l e notas de segurança para arquivos comuns e diretórios.
Converta permissões do Linux entre caixas de seleção, código octal e notação simbólica
Fórmula do chmod
Onde:
- \(r\), \(w\), \(x\) — os bits de leitura, escrita e execução, cada um valendo 1 se a permissão for concedida e 0 caso contrário;
- \(d\) — o dígito octal de uma classe (dono, grupo ou outros), montado com os pesos 4-2-1;
- \(s_{\text{uid}}\), \(s_{\text{gid}}\), \(s_{\text{sticky}}\) — os bits especiais setuid, setgid e sticky (também 0 ou 1).
Cada classe de permissões recebe um dígito octal porque a leitura vale 4, a escrita vale 2 e a execução vale 1; somando os valores concedidos, você obtém um número de 0 a 7. O dígito inicial opcional codifica os bits especiais com os mesmos pesos 4-2-1 — por isso 4755 significa setuid somado ao bom e velho 755.
Exemplo de cálculo do chmod
Exemplo: um script que o dono pode editar e executar à vontade, enquanto o grupo e todos os demais só podem ler e executar — a configuração clássica 755 (esta também é a grade padrão da calculadora: dono r+w+x, grupo r+x, outros r+x).
\[ d_{\text{dono}} = 4 + 2 + 1 = 7 \]
\[ d_{\text{grupo}} = 4 + 0 + 1 = 5 \]
\[ d_{\text{outros}} = 4 + 0 + 1 = 5 \]
\[ \text{modo} = 755 \]
Resultado: modo octal 755, modo simbólico rwxr-xr-x, comando chmod 755 arquivo. Em uma listagem de ls -l, o arquivo aparece como -rwxr-xr-x.
Como usar a calculadora
- Abra a lista suspensa Método de entrada e escolha como você quer descrever as permissões: Caixas de seleção (grade de permissões), Código octal, Notação simbólica ou Predefinições comuns. Somente os campos do método escolhido permanecem visíveis.
- Em Caixas de seleção, marque Leitura, Escrita e Execução para cada classe — dono (u), grupo (g) e outros (o) — e, opcionalmente, os bits especiais Setuid, Setgid e Sticky.
- No Código octal, digite três dígitos (ex.: 755) ou quatro, com o dígito especial à esquerda (ex.: 4755). Na Notação simbólica, informe nove caracteres como rwxr-xr-x, ou cole uma linha completa de
ls -l, como-rwxr-xr-x— o caractere inicial, que indica o tipo do arquivo, é descartado automaticamente. Nas Predefinições comuns, basta escolher um conjunto de permissões pronto. - Defina o Tipo de arquivo como Arquivo comum (-) ou Diretório (d) para que a explicação e a prévia do
ls -lusem a terminologia correta. - Confira os resultados: o modo numérico (octal), o modo simbólico, os comandos chmod prontos para copiar, uma prévia no estilo ls -l, uma explicação em linguagem simples e notas de segurança.
O que são as permissões de arquivos no Linux e como lê-las
Cada arquivo e diretório de um sistema Linux carrega nove bits de permissão, divididos em três classes: o dono (u), que criou o arquivo, o grupo (g) ao qual o arquivo pertence e os outros (o) — todo o resto da máquina. Dentro de cada classe, três bits indicam se ela pode ler (r), escrever (w) e executar (x) o arquivo. O comando chmod altera esses bits, e a calculadora converte qualquer representação deles em todas as outras.
A notação octal comprime cada classe em um dígito com os pesos 4-2-1 — é por isso que você encontra modos como 644 ou 755. A notação simbólica escreve os mesmos bits como nove caracteres lidos da esquerda para a direita: a tríade do dono, a do grupo e a dos outros. Um hífen significa que a permissão não existe; assim, rw-r--r-- é o 644, que permite leitura, mas não execução. As duas formas descrevem exatamente os mesmos bits — escolha a forma aceita pela ferramenta que você estiver usando.
O significado dos bits depende do tipo de arquivo. Em um arquivo comum, r significa ver o conteúdo, w significa alterá-lo e x significa executá-lo como programa. Em um diretório, r significa listar os nomes que estão dentro dele, w significa criar, renomear ou excluir entradas internas, e x significa entrar nele com cd e abrir os arquivos que ele contém. É por isso que um diretório precisa de x para que seu conteúdo seja utilizável, e é por isso também que 700 é o modo padrão para pastas privadas como ~/.ssh.
Três bits especiais completam o quadro. O setuid (4) faz um executável rodar com os privilégios do dono dele — o mecanismo por trás do /usr/bin/passwd. O setgid (2) faz o mesmo com o grupo e, em diretórios, faz os arquivos novos herdarem o grupo do diretório. O sticky (1) restringe a exclusão em um diretório compartilhado e gravável, de modo que cada usuário só pode apagar os próprios arquivos — a regra que mantém o /tmp (1777) seguro. Na saída simbólica, eles aparecem como s/S em uma posição de execução ou t/T na posição final; a forma maiúscula indica que o bit de execução por baixo está desativado.
Modos de permissão comuns
| Modo | Simbólico | Uso típico |
|---|---|---|
| 600 | rw------- | Arquivos privados, como chaves SSH |
| 644 | rw-r--r-- | Arquivos comuns, conteúdo da web |
| 700 | rwx------ | Diretórios privados, como ~/.ssh |
| 755 | rwxr-xr-x | Programas, scripts, arquivos servidos na web |
| 775 | rwxrwxr-x | Diretórios compartilhados com um grupo de confiança |
| 1777 | rwxrwxrwt | Área temporária compartilhada, como /tmp |
| 4755 | rwsr-xr-x | Executáveis setuid root (use com moderação) |
Premissas, limitações e dicas práticas
- 777 quase nunca é a resposta. Tornar um arquivo gravável por todos o abre para todas as contas do sistema. Prefira 775 com um grupo bem escolhido, ou ACLs (
setfacl), antes de partir para 777. - Nunca combine permissão de escrita para todos com setuid ou setgid. Modos como 4777 ou 7777 permitem que qualquer pessoa substitua o arquivo enquanto ele continua rodando com privilégios elevados — um buraco clássico de escalação de privilégios.
- Os outros não devem ter mais permissões que o dono. Se o terceiro dígito for maior que o primeiro, é quase certo que você digitou o modo errado; as notas de segurança vão sinalizar isso.
- 000 bloqueia todos, inclusive o dono. Somente o root consegue recuperar o acesso, então use 600 ou 700 quando quiser privacidade.
- Cuidado com o
chmod -R. Um modo numérico recursivo sobrescreve de uma só vez todos os bits de cada arquivo e subdiretório; diretórios normalmente precisam de x, enquanto arquivos de dados não deveriam tê-lo. Aplique os modos por tipo de arquivo, em vez de varrer a árvore inteira de uma vez. - O root ignora os bits de permissão. As permissões limitam usuários comuns; elas não protegem contra acessos em nível de root.
- A calculadora converte entre si as representações conhecidas de permissões, incluindo os bits especiais, mas não consegue levar em conta ACLs, SELinux ou outros controles de acesso obrigatórios que também podem afetar o acesso real.
Se você trabalha com outras codificações usadas no Linux, o conversor de timestamp Unix, o conversor de hexadecimal e a calculadora binária também podem ser úteis para entender os sistemas numéricos envolvidos.
Perguntas frequentes
Como definir permissões diferentes para arquivos e diretórios de forma recursiva?
Use o find para aplicar um modo separado a cada tipo de arquivo: find /caminho -type d -exec chmod 755 {} + para diretórios e find /caminho -type f -exec chmod 644 {} + para arquivos. Um simples chmod -R 755 dá aos arquivos de dados um bit de execução de que não precisam, enquanto o -R 644 tira o bit x dos diretórios, tornando impossível entrar neles. Dividir por tipo evita os dois erros.
Como ver as permissões atuais de um arquivo em formato octal?
Execute stat -c '%a' arquivo (ou stat -f '%Lp' arquivo no macOS) e você recebe o modo direto como dígitos, por exemplo 644. A listagem longa do ls -l mostra apenas a forma simbólica, que depois você precisa decodificar por conta própria. Essa saída octal é exatamente o que o campo Código octal da calculadora espera: é só colar e conferir o que cada bit faz.
Por que ainda recebo "Permission denied" depois do chmod?
Verifique três coisas: o diretório ao longo do caminho precisa conceder a você x (execução) para que você alcance o arquivo — um diretório 644 bloqueia tudo o que está dentro dele, mesmo que o arquivo esteja em 777. Você também não pode aplicar chmod em um arquivo do qual não é dono e, por fim, regras no nível do sistema de arquivos podem sobrepor os bits: opções de montagem como noexec, ACLs, SELinux ou AppArmor podem negar o acesso independentemente do modo.
O que significa chmod a+r e em que ele difere de o+r?
a significa "all" (todos) — aplica a mudança de uma vez ao dono (u), ao grupo (g) e aos outros (o), de modo que a+r concede leitura a todo mundo. O o+r afeta apenas a classe dos outros. Em octal não existe esse atalho: um modo numérico sempre sobrescreve os nove bits. Por isso, quando algumas classes devem manter seus bits atuais, é melhor ajustá-las com os operadores + e − da forma simbólica em vez de fazer uma substituição numérica completa.
Por que meus arquivos novos ficam com 664 em vez de 755? O que é umask?
O umask é uma configuração definida por shell que corta bits do modo que um programa solicita ao criar um arquivo. Com o umask comum 002, um programa que pede 666 (rw-rw-rw-) recebe 664, e um pedido de 777 para um diretório resulta em 775. Verifique o seu com umask e altere-o, por exemplo, com umask 022. O chmod não participa do momento da criação — ele só reescreve os bits depois.
Por que o setuid não funciona no meu shell script?
A maioria dos sistemas Linux ignora de propósito o bit setuid em scripts interpretados (shell, Python e semelhantes), porque quem executa de fato é o interpretador — e não o script — e os interpretadores rodam como o usuário que os chamou. O setuid quase só tem efeito sobre binários compilados, como o /usr/bin/passwd. Se você precisa de ações com privilégios elevados em um script, use regras do sudo em vez de torcer para que um chmod 4755 no script resolva.