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
| Quem | Leitura (4) | Escrita (2) | Execução (1) | Dígito |
|---|---|---|---|---|
| Dono (u) | Sim | Sim | Não | 6 |
| 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 e alterar | Só listar nomes; a escrita não vale sem execução |
| Grupo (g) | Nenhum acesso | Nenhum acesso |
| Outros (o) | Nenhum acesso | Nenhum acesso |
Dados
| Octal | 600 (0600) |
|---|---|
| Simbólico | rw------- |
| ls -l, arquivo | -rw------- |
| ls -l, diretório | drw------- |
| Comando simbólico equivalente | chmod u=rw,go= |
| umask padrão que gera esse modo | umask 077 para arquivos novos |
| Como o Git registra um arquivo assim | 100644 (não executável) |
| Bits especiais | Nenhum |
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
chmod 600 ~/.ssh/id_ed25519
chmod u=rw,go= ~/.ssh/id_ed25519 # mesmo resultadostat -c '%a %A %n' ~/.ssh/id_ed25519 # Linux (stat do GNU): 600 -rw-------
stat -f '%Lp %Sp %N' ~/.ssh/id_ed25519 # macOS e BSDAplicando 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.