Skip to content

chmod 640

chmod 640 define rw-r-----: o dono pode ler e alterar o arquivo, os membros do grupo podem ler, e os demais não têm acesso.

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)SimNãoNão4
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)Ler o conteúdoSó listar nomes; não entra nem abre nada
Outros (o)Nenhum acessoNenhum acesso

Dados

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

Quando usar

  • Configurações com credenciais que um serviço lê pelo grupo: dono root ou deploy, grupo www-data, modo 640.
  • Arquivos de log: Debian e Ubuntu gravam muitos arquivos de /var/log como 640 com grupo adm, para administradores lerem sem sudo e usuários comuns não.
  • Arquivos de site que o servidor lê pelo grupo (o WordPress aceita 640 para arquivos). É o que os arquivos novos recebem com umask 027.

Quando não usar

  • Quando o processo que lê o arquivo não é o dono nem está no grupo: ele recebe permission denied.
  • Chaves privadas do SSH: o ssh recusa chaves que o grupo consegue ler. Use 600.
  • Arquivos que o grupo precisa atualizar: use 660.

Comandos

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

Aplicando numa árvore inteira

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

find . -type d -exec chmod 750 {} +
find . -type f -exec chmod 640 {} +

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,g=rX,o= ..

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 640?
Dono 6 (rw-), grupo 4 (r--), outros 0 (---).
Qual a diferença entre 640 e 644?
Os outros. O 644 deixa qualquer conta ler o arquivo; o 640 limita a leitura ao dono e ao grupo.
Um arquivo .env deve ser 640 ou 600?
600 se a aplicação roda como dona do arquivo, 640 se o dono é um usuário de deploy e a aplicação lê pelo grupo.

Revisado em por Arielton Oberek.