Skip to content

chmod 600

chmod 600 define rw-------: o dono pode ler e gravar o arquivo, e o grupo e todas as outras contas não podem ler, gravar nem executar.

Matriz de permissões

Quais bits de permissão cada classe tem
QuemLeitura (4)Escrita (2)Execução (1)Dígito
Dono (u)SimSimNão6
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 e alterarSó listar nomes; a escrita não vale sem execução
Grupo (g)Nenhum acessoNenhum acesso
Outros (o)Nenhum acessoNenhum acesso

Dados

Representações deste modo
Octal600 (0600)
Simbólicorw-------
ls -l, arquivo-rw-------
ls -l, diretóriodrw-------
Comando simbólico equivalentechmod u=rw,go=
umask padrão que gera esse modoumask 077 para arquivos novos
Como o Git registra um arquivo assim100644 (não executável)
Bits especiaisNenhum

Quando usar

  • Chaves privadas do SSH, ~/.ssh/authorized_keys e ~/.ssh/config: o manual do ssh(1) diz que chaves privadas não podem ser acessíveis por outros, senão o ssh as ignora.
  • Arquivos de credenciais que os clientes conferem: o PostgreSQL ignora o ~/.pgpass se grupo ou outros tiverem qualquer acesso, e curl e ftp leem o ~/.netrc, que deve ser 600.
  • É o que os arquivos novos recebem com umask 077.

Quando não usar

  • Arquivos que um serviço precisa ler com outra conta: o nginx não lê um certificado ou config 600 que pertence ao seu usuário. Use 640 com o grupo do serviço.
  • Scripts que você executa: 600 não tem bit de execução, então ./script falha. Use 700.

Comandos

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

Aplicando numa árvore inteira

O chmod -R colocaria o mesmo modo em arquivos e diretórios. Defina os diretórios como 700 e os arquivos como 600 separadamente:

find . -type d -exec chmod 700 {} +
find . -type f -exec chmod 600 {} +

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=rwX,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 600?
Dono 6 (leitura 4 + escrita 2), grupo 0, outros 0. Só o dono consegue abrir o arquivo.
Chave SSH deve ser 600 ou 400?
O ssh aceita as duas. O 600 permite editar a chave (por exemplo ssh-keygen -p para trocar a senha); o 400 também protege contra uma escrita acidental sua.
Como corrigir o erro "Permissions are too open" da chave?
Rode chmod 600 ~/.ssh/id_ed25519 (com o nome do seu arquivo). Se a chave estiver num disco Windows ou FAT, que não guarda permissões, copie para o ~/.ssh antes.

Revisado em por Arielton Oberek.