O Que o chmod Faz?
O chmod (change mode) é o comando do Linux e do Unix que define quem pode ler, gravar e executar um arquivo ou uma pasta. Todo arquivo tem três conjuntos de permissões: um para o dono, um para o grupo e um para todos os demais (outros). A calculadora acima transforma essas nove caixas de seleção no número ou nas letras que o chmod espera, e vice-versa.
Você pode passar um modo ao chmod de duas formas: como número octal, como em chmod 755 script.sh, ou na forma simbólica, como em chmod u+x script.sh. Só o dono do arquivo ou o root pode alterar as permissões dele.

Como Funcionam as Permissões de Arquivos no Linux
Cada permissão tem um valor: leitura = 4, escrita = 2 e execução = 1. Some os valores de cada classe para obter um dígito de 0 a 7 e escreva os três dígitos em ordem: dono, grupo, outros. Assim, rwx é 4+2+1 = 7, r-x é 4+0+1 = 5 e rwxr-xr-x é 755.
Rode ls -l e você verá a mesma coisa em letras, por exemplo -rwxr-xr-x. O primeiro caractere é o tipo de arquivo (- para arquivo comum, d para diretório, l para link simbólico), seguido de três grupos de rwx para dono, grupo e outros. Um hífen significa que aquela permissão está desligada.
As letras significam coisas um pouco diferentes em arquivos e em pastas:
Arquivo: abrir e ler o conteúdo. Pasta: listar os nomes dentro dela com ls.
Arquivo: alterar o conteúdo. Pasta: criar, apagar e renomear arquivos dentro dela (isso também exige execução na pasta). Apagar um arquivo depende da permissão de escrita da pasta, não da do arquivo.
Arquivo: rodá-lo como programa ou script. Pasta: entrar nela com cd e abrir os arquivos de dentro pelo nome. Com leitura mas sem execução, você consegue listar os nomes de uma pasta, mas não abrir nada nela.
u é o dono do arquivo, g o grupo e o todos os demais. O Linux usa apenas a primeira classe que corresponde a você: se você é o dono, as permissões do grupo e dos outros não se aplicam a você, mesmo quando permitem mais.
Advertisement
Permissões chmod Comuns e Quando Usá-las
Estes modos cobrem quase todos os casos reais. A maioria também aparece como botão predefinido na calculadora.
O padrão para a maioria dos arquivos: páginas web, imagens e arquivos de configuração que não são secretos. O dono pode editar, todos os outros só podem ler.
O padrão para diretórios e para programas ou scripts que todos podem rodar. Só o dono pode alterá-los.
Só o dono pode ler ou gravar. Use para chaves privadas SSH, arquivos .env, tokens de API e qualquer outra coisa que contenha uma senha.
Só o dono pode abrir ou listar a pasta. O padrão para ~/.ssh e pastas pessoais de scripts.
O dono edita, um grupo (por exemplo, o grupo do servidor web) lê, e ninguém mais consegue ver o arquivo.
O dono tem acesso total, o grupo pode abrir e ler a pasta, e os outros ficam de fora.
O dono e o grupo podem editar. Comum em servidores de equipe onde vários usuários compartilham um grupo.
O dono e o grupo podem criar e apagar arquivos dentro dela; os outros só podem olhar.
Só o dono pode ler e ninguém pode gravar. A AWS orienta rodar chmod 400 em um par de chaves .pem baixado antes de usá-lo com SSH.
Todo usuário e processo da máquina pode ler, alterar e executar. Quase nunca é a solução certa, como explica a próxima seção.
chmod 755 vs 644 vs 777
755 e 644 diferem apenas no bit de execução: 755 permite que todos executem o arquivo ou abram a pasta, 644 não. Por isso a regra comum é pastas 755, arquivos 644: as pastas precisam de execução para que as pessoas consigam entrar nelas, enquanto a maioria dos arquivos nunca deve ser executada.
777 dá acesso de escrita a todas as contas da máquina, incluindo o usuário do servidor web. Se qualquer site ou script no servidor for comprometido, o invasor pode alterar ou substituir seus arquivos, injetar malware nas suas páginas ou instalar um backdoor. Quando algo falha com "Permission denied", a solução real costuma ser o dono certo (chown) ou o grupo certo, não 777.
Permissões recomendadas para os casos mais comuns:
Arquivos do site (HTML, PHP, imagens):
644. Pastas do site:755. É o que o WordPress e a maioria dos painéis de hospedagem recomendam.wp-config.php e outros arquivos com senhas de banco de dados: o WordPress sugere
440ou400para que outros usuários do servidor não consigam lê-lo.600ou640também o mantêm privado e ainda deixam o dono editá-lo.Pastas de upload ou cache em que o servidor web precisa gravar: dê acesso de escrita ao grupo do servidor web (
775) ou torne o usuário do servidor web o dono, em vez de usar777.Pasta ~/.ssh:
700. Chaves privadas (id_ed25519,id_rsa):600ou400. authorized_keys:600. Chaves públicas (.pub):644.Scripts de shell que você quer executar:
755, ou700se só você deve executá-los.chmod +x script.shadiciona execução sem mexer nos outros bits.
Advertisement
Como corrigir "Permissions 0644 are too open" em chaves SSH
O SSH ignora uma chave privada que outros usuários conseguem ler e mostra WARNING: UNPROTECTED PRIVATE KEY FILE! seguido de Permissions 0644 for '/home/you/.ssh/id_rsa' are too open. Rode chmod 600 ~/.ssh/id_rsa (ou chmod 400) e conecte de novo. No lado do servidor, com a configuração padrão StrictModes yes, o daemon SSH também ignora o authorized_keys se esse arquivo, o ~/.ssh ou a sua pasta pessoal puderem ser gravados pelo grupo ou pelos outros.
Se as permissões estiverem certas e a conexão ainda falhar, verifique se a porta 22 está aberta no servidor.
Permissões Especiais: Setuid, Setgid e Sticky Bit
Um quarto dígito, à esquerda, adiciona três bits especiais: 4 = setuid, 2 = setgid e 1 = sticky. Eles se somam como os outros, então 6755 é setuid mais setgid. No ls -l, eles ocupam o lugar da letra de execução: s na posição do dono ou do grupo, t na posição dos outros.
Uma peculiaridade do Linux: o GNU chmod 755 dir (e chmod 0755 dir) mantém um bit setuid ou setgid já existente em um diretório. Para removê-lo, diga isso explicitamente com chmod g-s dir (ou chmod a-s dir para os dois bits), ou use cinco dígitos: chmod 00755 dir.
Um programa com setuid roda com os privilégios do dono dele, e não com os seus. O /usr/bin/passwd é 4755 (-rwsr-xr-x) na maioria dos sistemas Linux, para que usuários comuns possam atualizar o arquivo de senhas que pertence ao root. O Linux ignora setuid em scripts de shell e em diretórios.
Em um programa, ele roda com o grupo do arquivo. Em uma pasta é mais útil: novos arquivos criados dentro dela recebem o grupo da pasta, e novas subpastas herdam o setgid. 2775 é o modo clássico para uma pasta compartilhada de equipe.
Em uma pasta, só o dono de um arquivo, o dono da pasta ou o root podem apagar ou renomear arquivos nela, mesmo que todos possam gravar ali. É por isso que /tmp é 1777 (drwxrwxrwt). O Linux ignora o sticky bit em arquivos.
Um S ou T maiúsculo no ls -l significa que o bit especial está ativo, mas o bit de execução na mesma posição não. Por exemplo, 4644 aparece como rwSr--r-- e 1666 como rw-rw-rwT.
Advertisement
Modo Simbólico: u, g, o, a com +, - e =
O modo simbólico altera as permissões em relação ao que já existe, algo que um número octal simples não consegue fazer. Ele tem três partes: quem (u dono, g grupo, o outros, a todos), um operador (+ adiciona, - remove, = define exatamente) e as permissões (r, w, x, além de s e t). Separe várias alterações com vírgulas, sem espaços.
chmod +x file sem a letra de quem significa as três classes, menos o que a sua umask bloquear. Com a umask comum 022, isso é o mesmo que a+x.
chmod u+x deploy.sh: permite que o dono execute o script e não muda mais nada.chmod go-w report.txt: remove a permissão de escrita do grupo e dos outros.chmod o= secrets.txt: tira todas as permissões dos outros.chmod a+r index.html: todos podem ler o arquivo.chmod u=rwx,g=rx,o=rx app: a forma simbólica de escrever 755. A calculadora mostra essa forma para qualquer modo.chmod -R u=rwX,go=rX public_html: o X maiúsculo adiciona execução só às pastas e aos arquivos que já são executáveis, então as pastas ficam com 755 e os arquivos comuns com 644.
umask: Permissões Padrão para Novos Arquivos
A umask decide quais permissões novos arquivos e pastas recebem. A maioria dos programas cria arquivos com 666 (rw-rw-rw-) e pastas com 777, e todo bit ativo na umask é desligado. Com a umask comum 022, novos arquivos saem como 644 e novas pastas como 755.
É uma máscara de bits, não uma subtração. Com a umask 027, os arquivos ficam com 640; subtrair 027 de 666 dígito por dígito nem sequer dá um modo válido. Abra a aba Umask da calculadora para ver o resultado de qualquer valor.
022: arquivos 644, pastas 755. O padrão habitual.002: arquivos 664, pastas 775. Permite que o seu grupo edite o que você cria; comum onde cada usuário tem um grupo privado.027: arquivos 640, pastas 750. Nada para os outros, uma boa escolha em servidores.077: arquivos 600, pastas 700. Totalmente privado.Rode
umaskpara ver a sua,umask -Spara vê-la em letras eumask 027para alterá-la no shell atual. Adicione o comando ao~/.bashrcou ao~/.profilepara mantê-la.
Advertisement
Como Usar a Calculadora Chmod
Marque Leitura, Escrita e Execução para o dono, o grupo e os outros, ou clique em um modo predefinido como 644 ou 755. Cada linha mostra o seu dígito na hora.
Digite um número octal como 750 ou 2775, ou cole uma string simbólica como rwxr-x---. Uma string completa do ls -l, como drwxr-sr-x, também funciona, e o tipo de arquivo é exibido.
Marque Setuid, Setgid ou Sticky para obter o modo de 4 dígitos. Um alerta aparece quando um modo permite que qualquer pessoa grave sem o sticky bit.
Informe o nome do arquivo ou da pasta, marque Recursivo para uma árvore de diretórios inteira e copie o comando chmod numérico ou simbólico. O endereço da página guarda o modo (por exemplo ?mode=750), então você pode salvá-lo nos favoritos ou compartilhá-lo.
Exemplos do Comando chmod
Rode estes comandos em um terminal Linux ou macOS. Coloque sudo na frente quando o arquivo pertencer a outro usuário ou ao root.
chmod +x deploy.sh # adiciona execução
chmod 755 deploy.sh # ou define o modo completo
./deploy.shfind /var/www/html -type d -exec chmod 755 {} +
find /var/www/html -type f -exec chmod 644 {} +chmod -R 755 folder # os arquivos também ficam executáveis
chmod -R u=rwX,go=rX folder # pastas 755, arquivos 644chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519 ~/.ssh/authorized_keys
chmod 644 ~/.ssh/id_ed25519.pubstat -c '%a %n' file # Linux: 644 file
stat -f '%Lp %N' file # macOS: 644 file
stat -f '%Mp%Lp %N' file # macOS com bits especiais: 0644 filechgrp developers /srv/project
chmod 2775 /srv/project # novos arquivos recebem o grupo developersMais Ferramentas para Desenvolvedores
Outras ferramentas grátis para desenvolvedores e administradores de sistemas, todas no seu navegador. Precisa de IDs únicos para arquivos ou registros? Experimente o gerador de UUID.
Faixas CIDR, máscaras de rede e hosts utilizáveis com uma grade visual de bits.
Verifique se a porta 22, 80, 443 ou qualquer outra está aberta.
Senhas aleatórias fortes com análise de entropia.
Timestamp Unix para data e vice-versa, em qualquer fuso horário.