Skip to content

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

Quais bits de permissão cada classe tem
QuemLeitura (4)Escrita (2)Execução (1)Dígito
Dono (u)SimSimSim7
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, alterar e executarListar, entrar, criar, apagar e renomear itens
Grupo (g)Nenhum acessoNenhum acesso
Outros (o)Nenhum acessoNenhum acesso

Dados

Representações deste modo
Octal700 (0700)
Simbólicorwx------
ls -l, arquivo-rwx------
ls -l, diretóriodrwx------
Comando simbólico equivalentechmod u=rwx,go=
umask padrão que gera esse modoumask 077 para diretórios novos
Como o Git registra um arquivo assim100755 (executável)
Bits especiaisNenhum

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

Comandos

Aplicar em um arquivo ou diretório
chmod 700 ~/.ssh
chmod u=rwx,go= ~/.ssh   # mesmo resultado
Conferir o resultado
stat -c '%a %A %n' ~/.ssh     # Linux (stat do GNU): 700 drwx------
stat -f '%Lp %Sp %N' ~/.ssh   # 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 ~/.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.