Calcule permissões de arquivos Unix e o comando chmod
Esta calculadora chmod converte permissões de arquivos do Linux e do macOS para todas as formas que você precisa: marque leitura, escrita e execução para o dono, o grupo e os demais, ou digite um modo octal como <code>755</code> ou simbólico como <code>rwxr-xr-x</code>, e as outras visualizações acompanham. Você recebe o comando <code>chmod</code> correspondente nas formas numérica e simbólica, os bits setuid, setgid e sticky, e um resumo em linguagem simples de quem pode fazer o quê. Tudo é calculado no seu navegador.
Como calcular permissões chmod
- 1Marque as permissões desejadas para Dono, Grupo e Outros, ou digite um modo octal como
644ou simbólico comorw-r--r--. Você também pode colar uma coluna inteira dols -l, comodrwxr-sr-x. - 2Escolha Arquivo ou Diretório: leitura, escrita e execução significam coisas diferentes em cada caso, e a explicação muda de acordo.
- 3Adicione o bit setuid, setgid ou sticky se precisar, ou comece por um modo comum como 755 ou 600.
- 4Digite o caminho, ative Recursivo se deve valer para uma árvore inteira e copie o comando chmod.
Como funcionam as permissões octais
Cada arquivo tem três conjuntos de permissões: um para o dono (u), um para o grupo (g) e um para os outros (o), ou seja, todo o resto. Cada conjunto tem três bits — leitura, escrita e execução — e um dígito octal é simplesmente a soma deles: leitura vale 4, escrita 2 e execução 1. Então 7 é rwx (4+2+1), 6 é rw- (4+2), 5 é r-x (4+1) e 4 é r-- sozinho.
Três dígitos formam o modo completo, na ordem dono, grupo, outros. Assim, chmod 755 dá ao dono rwx e a todos os outros r-x, escrito rwxr-xr-x, enquanto chmod 644 dá ao dono rw- e a todos os outros r--, escrito rw-r--r--. Um quarto dígito na frente guarda os bits especiais: 4 para setuid, 2 para setgid e 1 para sticky, como em chmod 1777.
Valores chmod comuns
- 644 (rw-r--r--)
- O padrão para arquivos comuns: o dono pode editar, todos podem ler. Ideal para HTML, imagens e a maioria das configurações.
- 755 (rwxr-xr-x)
- O padrão para diretórios, scripts e programas: todos podem ler e executar, só o dono pode alterar.
- 600 (rw-------)
- Arquivos privados que só o dono pode ler: chaves privadas SSH, arquivos .env, credenciais. O ssh recusa uma chave privada que outros possam ler.
- 700 (rwx------)
- Um diretório privado, como ~/.ssh, em que só o dono pode entrar.
- 664 / 775
- Como 644 e 755, mas o grupo também pode escrever: para pastas de projeto compartilhadas entre colegas do mesmo grupo.
- 777 (rwxrwxrwx)
- Qualquer pessoa pode ler, alterar e executar. Quase nunca é a solução certa para um erro de permissão, e é um risco de segurança em um servidor web.
- 1777 (rwxrwxrwt)
- Gravável por todos com o sticky bit, como o /tmp: todos podem criar arquivos, mas só o dono de um arquivo pode apagá-lo.
Permissões em diretórios
Em um diretório, as três letras têm outro significado. Leitura permite listar os nomes dentro dele; escrita permite criar, renomear e apagar entradas nele; execução (muitas vezes chamada de busca) permite entrar com cd e acessar os arquivos pelo nome. Leitura e escrita servem pouco sem execução, por isso diretórios quase sempre têm x onde têm r — 755 em vez de 644.
Apagar um arquivo é uma alteração no diretório, não no arquivo. Qualquer pessoa com permissão de escrita e execução em um diretório pode apagar qualquer arquivo nele, até um arquivo somente leitura que não seja dela — a menos que o diretório tenha o sticky bit.
Setuid, setgid e o sticky bit
Na forma simbólica, os bits especiais substituem a letra de execução: s quando a execução também está ativa e S quando não está, e t ou T para o sticky bit. Uma letra maiúscula geralmente indica um erro, porque um programa setuid que ninguém pode executar não faz nada.
Uma peculiaridade do GNU coreutils: chmod 755 em um diretório mantém um bit setuid ou setgid existente. Para removê-los com um número, escreva cinco dígitos — chmod 00755 — ou use chmod g-s.
- Setuid (4000, u+s)
- Um executável roda com os privilégios do dono, e não de quem o chama. O passwd usa isso para gravar /etc/shadow como root. O Linux ignora em scripts e diretórios.
- Setgid (2000, g+s)
- Um executável roda com os privilégios do seu grupo. Em um diretório, os arquivos novos herdam o grupo do diretório em vez do grupo principal de quem os criou — a configuração usual para pastas de equipe (2775).
- Sticky bit (1000, +t)
- Em um diretório, só o dono do arquivo, o dono do diretório ou o root podem apagar ou renomear os arquivos dentro dele. O Linux moderno ignora em arquivos.
chmod numérico ou simbólico?
Um modo numérico como chmod 644 file define todos os bits de uma vez, o que você quer quando sabe o estado final. A forma simbólica é mais flexível: chmod u=rw,g=r,o=r file define o mesmo, enquanto chmod g+w file ou chmod o-rwx file alteram só os bits citados e deixam o resto como está.
Cuidado com chmod -R: um único modo para todos os arquivos e diretórios de uma árvore costuma dar aos arquivos bits de execução que eles não deveriam ter. Use find . -type d -exec chmod 755 {} + e find . -type f -exec chmod 644 {} + para tratá-los separadamente, ou o X maiúsculo em chmod -R u=rwX,go=rX, que adiciona execução só a diretórios e a arquivos que já a tinham. Arquivos novos recebem as permissões iniciais da umask: uma umask 022 gera arquivos 644 e diretórios 755. Para encontrar nomes de arquivos em scripts de shell, experimente o Regex Tester.
Perguntas frequentes
- O que significa chmod 755?
- 755 dá ao dono leitura, escrita e execução (7) e ao grupo e a todos os outros leitura e execução (5 e 5), escrito rwxr-xr-x. É o modo usual para diretórios, scripts e programas.
- O que significa chmod 644?
- 644 dá ao dono leitura e escrita (6) e a todos os outros apenas leitura (4 e 4), escrito rw-r--r--. É o modo usual para arquivos comuns, como páginas web, imagens e arquivos de configuração.
- Qual a diferença entre 755 e 644?
- 755 adiciona execução para todos. Em um arquivo, isso permite executá-lo como programa; em um diretório, permite entrar nele. Use 644 para arquivos que só são lidos e 755 para diretórios e executáveis.
- chmod 777 é seguro?
- Raramente. 777 permite que qualquer usuário do sistema altere ou substitua o arquivo, e em um servidor web pode deixar um invasor que entrou por um site modificar outros. Em vez disso, corrija o dono com chown ou dê acesso ao grupo (775 ou 664).
- Quais permissões uma chave privada SSH deve ter?
- 600 (rw-------), ou 400 para somente leitura, com o próprio ~/.ssh em 700. O OpenSSH se recusa a usar uma chave privada que outros usuários possam ler e mostra "UNPROTECTED PRIVATE KEY FILE".
- O que significa o s ou o t em rwsr-xr-x?
- Um s na posição do dono ou do grupo é o bit setuid ou setgid com a execução também ativa; um t na posição de outros é o sticky bit. S ou T maiúsculo significa que o bit especial está ativo sem a permissão de execução por baixo.
- Como converto rwxr-xr-x em número?
- Divida em três grupos — rwx, r-x, r-x — e some r=4, w=2 e x=1 em cada um: 7, 5, 5, resultando em 755. Digite no campo simbólico acima para converter na hora.
- Esta ferramenta altera algum arquivo?
- Não. Ela só calcula o modo e o comando; quem executa o comando é você. Tudo acontece no seu navegador.