Tabela chmod
A tabela completa de permissões, o que cada número quer dizer e quais valores usar em cada situação — inclusive por que o SSH recusa sua chave.
25 itens em 5 seções
Os três dígitos
4- Leitura (r) — ver o conteúdo do arquivo ou listar o diretório
2- Escrita (w) — alterar o arquivo ou criar e remover dentro do diretório
1- Execução (x) — rodar o arquivo ou entrar no diretório
7 = 4+2+1- Leitura, escrita e execução
6 = 4+2- Leitura e escrita, sem execução
5 = 4+1- Leitura e execução, sem escrita
Valores comuns
chmod 755 pasta- rwxr-xr-x — padrão de diretórios e de scripts executáveis
chmod 644 arquivo- rw-r--r-- — padrão de arquivos comuns servidos na web
chmod 600 ~/.ssh/id_ed25519- rw------- — obrigatório em chave privada, o SSH recusa qualquer coisa mais aberta
chmod 700 ~/.ssh- rwx------ — o diretório de chaves só para o dono
chmod 400 certificado.pem- r-------- — somente leitura pelo dono; o que a AWS exige em chave de EC2
chmod 777 qualquer- rwxrwxrwx — evite: qualquer usuário do sistema pode escrever e executar
Notação simbólica
chmod u+x script.sh- Adiciona execução para o dono
chmod go-w arquivo- Remove escrita do grupo e dos outros
chmod a=r arquivo- Define somente leitura para todo mundo
chmod -R u+rwX pasta- Recursivo; o X maiúsculo só dá execução a diretórios e ao que já é executável
u g o a- Dono, grupo, outros, todos — os alvos da notação simbólica
Permissões especiais
chmod 4755 binario- setuid — executa com a identidade do dono do arquivo; use com muito cuidado
chmod 2775 pasta- setgid em diretório — o que for criado dentro herda o grupo do diretório
chmod 1777 /tmp- sticky bit — todos escrevem, mas cada um só apaga o que é seu
Dono e grupo
chown usuario:grupo arquivo- Troca dono e grupo
chown -R www-data:www-data /var/www- Recursivo, o caso típico de diretório servido pelo servidor web
ls -l- Mostra permissões, dono e grupo de cada item
stat -c '%a %n' arquivo- Mostra a permissão em número, útil para conferir de uma vez
umask 022- Define a máscara que subtrai permissão dos arquivos criados a partir dali
Perguntas frequentes
- Por que o SSH recusa minha chave privada?
- Porque a permissão está aberta demais. O SSH exige 600 na chave privada e 700 no diretório .ssh, e se recusa a usar a chave caso contrário — é uma proteção contra outros usuários da máquina lerem o segredo.
- 755 ou 644: qual usar?
- 755 em diretórios e em scripts que precisam rodar; 644 em arquivos comuns. Diretório sem o bit de execução não pode ser atravessado, o que quebra o acesso a tudo que está dentro dele.
- Por que 777 é perigoso?
- Porque dá escrita e execução a qualquer usuário do sistema. Em servidor web, é o caminho direto para que um arquivo enviado por terceiros vire código executável.