chmod 400
chmod 400 define r--------: o dono pode apenas ler o arquivo, e o grupo e todas as outras contas não têm acesso nenhum.
Matriz de permissões
| Quem | Leitura (4) | Escrita (2) | Execução (1) | Dígito |
|---|---|---|---|---|
| Dono (u) | Sim | Não | Não | 4 |
| Grupo (g) | Não | Não | Não | 0 |
| Outros (o) | Não | Não | Não | 0 |
Execução muda de sentido conforme o tipo. Num arquivo, deixa o kernel rodá-lo como programa. Num diretório, é a permissão de busca: entrar (cd) e alcançar os arquivos de dentro pelo nome. Leitura num diretório só lista os nomes.
| Quem | Num arquivo | Num diretório |
|---|---|---|
| Dono (u) | Ler o conteúdo | Só listar nomes; não entra nem abre nada |
| Grupo (g) | Nenhum acesso | Nenhum acesso |
| Outros (o) | Nenhum acesso | Nenhum acesso |
Dados
| Octal | 400 (0400) |
|---|---|
| Simbólico | r-------- |
| ls -l, arquivo | -r-------- |
| ls -l, diretório | dr-------- |
| Comando simbólico equivalente | chmod u=r,go= |
| umask padrão que gera esse modo | Nenhum dos umasks comuns; defina explicitamente com chmod |
| Como o Git registra um arquivo assim | 100644 (não executável) |
| Bits especiais | Nenhum |
Quando usar
- Chaves SSH privadas baixadas de um provedor de nuvem: o guia do Amazon EC2 manda rodar chmod 400 key-pair-name.pem antes de conectar, porque o ssh ignora chaves que outros conseguem ler.
- Credenciais que um processo lê com o próprio usuário e nunca regrava, como o wp-config.php quando o PHP roda como dono do arquivo (o WordPress recomenda 440 ou 400).
Quando não usar
- Arquivos que você atualiza com frequência: toda mudança exige chmod u+w antes. Para uma chave que você pode recriptografar com ssh-keygen -p, o 600 dá menos atrito.
- Arquivos que um serviço lê com outra conta: ele recebe permission denied.
Comandos
chmod 400 key.pem
chmod u=r,go= key.pem # mesmo resultadostat -c '%a %A %n' key.pem # Linux (stat do GNU): 400 -r--------
stat -f '%Lp %Sp %N' key.pem # macOS e BSDAplicando numa árvore inteira
O chmod -R colocaria o mesmo modo em arquivos e diretórios. Defina os diretórios como 500 e os arquivos como 400 separadamente:
find . -type d -exec chmod 500 {} +
find . -type f -exec chmod 400 {} +Ou numa passada só com o X maiúsculo, que só dá execução a diretórios e a arquivos que já tinham: chmod -R u=rX,go= ..
Git e o bit de execução
O Git guarda um único dado de permissão por arquivo: 100755 se o bit de execução do dono estiver ligado, 100644 caso contrário. Um arquivo com este modo entra no commit como 100644; os bits de grupo e outros nunca chegam ao repositório. No Windows, ou com core.fileMode false, ligue o bit com git update-index --chmod=+x.
Perguntas frequentes
- O que significa chmod 400?
- Dono 4 (leitura), grupo 0, outros 0: r--------.
- Por que a AWS manda dar chmod 400 no arquivo .pem?
- O ssh recusa chaves privadas que grupo ou outros conseguem ler, com "Permissions 0644 ... are too open". O 400 é só leitura para o dono, e o ssh aceita; 600 também funciona.
- Recebo "chmod: Operation not permitted" no arquivo .pem. Por quê?
- Você não é o dono, ou o arquivo está num sistema de arquivos sem permissões Unix (um disco Windows no WSL, FAT32, alguns compartilhamentos de rede). Copie para o ~/.ssh e rode o chmod lá.
Revisado em por Arielton Oberek.