chmod 700
chmod 700 define rwx------: o dono pode ler, gravar e executar (listar, alterar e entrar no diretório), e o grupo e os demais não têm acesso nenhum.
Matriz de permissões
| Quem | Leitura (4) | Escrita (2) | Execução (1) | Dígito |
|---|---|---|---|---|
| Dono (u) | Sim | Sim | Sim | 7 |
| 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, alterar e executar | Listar, entrar, criar, apagar e renomear itens |
| Grupo (g) | Nenhum acesso | Nenhum acesso |
| Outros (o) | Nenhum acesso | Nenhum acesso |
Dados
| Octal | 700 (0700) |
|---|---|
| Simbólico | rwx------ |
| ls -l, arquivo | -rwx------ |
| ls -l, diretório | drwx------ |
| Comando simbólico equivalente | chmod u=rwx,go= |
| umask padrão que gera esse modo | umask 077 para diretórios novos |
| Como o Git registra um arquivo assim | 100755 (executável) |
| Bits especiais | Nenhum |
Quando usar
- ~/.ssh: o manual do ssh(1) recomenda leitura, escrita e execução para o usuário e nenhum acesso para os demais.
- ~/.gnupg: o GnuPG mostra WARNING: unsafe permissions on homedir quando outros têm acesso.
- Scripts com credenciais ou que ninguém mais deve ler ou executar.
- É o que o mkdir cria com umask 077.
Quando não usar
- Qualquer diretório no caminho de arquivos que um serviço precisa ler. Uma home com 700 impede o nginx de servir ~/public_html.
- Pastas de projeto compartilhadas: os membros do grupo ficam sem nada.
- Arquivos de dados privados: o par para arquivos é 600, para não carregar um bit de execução inútil.
O conjunto de permissões do SSH
O sshd confere esses modos antes de aceitar login por chave quando StrictModes está ligado, o que é o padrão. A home não pode ter escrita para grupo ou outros, e o mesmo vale para ~/.ssh e authorized_keys.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys ~/.ssh/config ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pubComandos
chmod 700 ~/.ssh
chmod u=rwx,go= ~/.ssh # mesmo resultadostat -c '%a %A %n' ~/.ssh # Linux (stat do GNU): 700 drwx------
stat -f '%Lp %Sp %N' ~/.ssh # 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 ~/.ssh -type d -exec chmod 700 {} +
find ~/.ssh -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= ~/.ssh.
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 100755; 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 700?
- Dono 7 (rwx), grupo 0, outros 0. Só o dono (e o root) pode fazer qualquer coisa.
- Qual permissão o ~/.ssh deve ter?
- 700 para o diretório, 600 para chaves privadas, authorized_keys e config, e 644 para os arquivos .pub.
- Para um arquivo, 700 ou 600?
- 700 para scripts e programas que você executa, 600 para dados como chaves e arquivos de configuração. A única diferença é o bit de execução do dono.
Revisado em por Arielton Oberek.