Skip to content

chmod 770

chmod 770 define rwxrwx---: dono e grupo podem ler, gravar e executar (ou listar, alterar e entrar no diretório), e todas as outras contas ficam sem 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)SimSimSim7
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)Ler, alterar e executarListar, entrar, criar, apagar e renomear itens
Outros (o)Nenhum acessoNenhum acesso

Dados

Representações deste modo
Octal770 (0770)
Simbólicorwxrwx---
ls -l, arquivo-rwxrwx---
ls -l, diretóriodrwxrwx---
Comando simbólico equivalentechmod ug=rwx,o=
umask padrão que gera esse modoumask 007 para diretórios novos
Como o Git registra um arquivo assim100755 (executável)
Bits especiaisNenhum

Quando usar

  • Dados de aplicação compartilhados entre uma conta de serviço e quem a opera, quando nenhuma outra conta do servidor deve nem listar os nomes.
  • Pastas privadas de um grupo em servidores com muitos usuários (clusters de pesquisa, máquinas de build). Combine com setgid (2770) para os arquivos novos manterem o grupo.
  • É o que o mkdir cria com umask 007.

Quando não usar

  • Pastas que o servidor web precisa ler quando a conta dele não está no grupo. Ele cai na classe outros, fica sem nada e responde 403 Forbidden ou permission denied.
  • Diretórios pais no caminho de conteúdo público: cada diretório acima de um arquivo precisa de execução para quem lê, então um pai 770 bloqueia tudo abaixo dele.
  • Arquivos de dados comuns: use 660 para não ficarem executáveis.

Comandos

Aplicar em um arquivo ou diretório
sudo chmod 770 /srv/app/data
sudo chmod ug=rwx,o= /srv/app/data   # mesmo resultado
Conferir o resultado
stat -c '%a %A %n' /srv/app/data     # Linux (stat do GNU): 770 drwxrwx---
stat -f '%Lp %Sp %N' /srv/app/data   # macOS e BSD

Aplicando numa árvore inteira

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

sudo find /srv/app/data -type d -exec chmod 770 {} +
sudo find /srv/app/data -type f -exec chmod 660 {} +

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 ug=rwX,o= /srv/app/data.

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 770?
Dono rwx (7), grupo rwx (7), outros --- (0). Só o dono e os membros do grupo podem usar o arquivo ou diretório.
Por que dá permission denied num diretório 770 se eu estou no grupo?
A participação em grupos é lida no login. Depois do usermod -aG, saia e entre de novo (ou use newgrp) para que seus processos tenham o grupo novo. Confira com id.
Uso 770 ou 750?
Use 770 quando os membros do grupo precisam criar e apagar arquivos, e 750 quando só precisam ler. Os outros ficam sem acesso nos dois casos.

Revisado em por Arielton Oberek.