Skip to content

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

Quais bits de permissão cada classe tem
QuemLeitura (4)Escrita (2)Execução (1)Dígito
Dono (u)SimNãoNão4
Grupo (g)NãoNãoNão0
Outros (o)NãoNãoNão0

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.

O que cada classe pode fazer com um arquivo e com um diretório
QuemNum arquivoNum diretório
Dono (u)Ler o conteúdoSó listar nomes; não entra nem abre nada
Grupo (g)Nenhum acessoNenhum acesso
Outros (o)Nenhum acessoNenhum acesso

Dados

Representações deste modo
Octal400 (0400)
Simbólicor--------
ls -l, arquivo-r--------
ls -l, diretóriodr--------
Comando simbólico equivalentechmod u=r,go=
umask padrão que gera esse modoNenhum dos umasks comuns; defina explicitamente com chmod
Como o Git registra um arquivo assim100644 (não executável)
Bits especiaisNenhum

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

Aplicar em um arquivo ou diretório
chmod 400 key.pem
chmod u=r,go= key.pem   # mesmo resultado
Conferir o resultado
stat -c '%a %A %n' key.pem     # Linux (stat do GNU): 400 -r--------
stat -f '%Lp %Sp %N' key.pem   # macOS e BSD

Aplicando 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.