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
| Quem | Leitura (4) | Escrita (2) | Execução (1) | Dígito |
|---|---|---|---|---|
| Dono (u) | Sim | Sim | Sim | 7 |
| Grupo (g) | Sim | Sim | Sim | 7 |
| 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) | Ler, alterar e executar | Listar, entrar, criar, apagar e renomear itens |
| Outros (o) | Nenhum acesso | Nenhum acesso |
Dados
| Octal | 770 (0770) |
|---|---|
| Simbólico | rwxrwx--- |
| ls -l, arquivo | -rwxrwx--- |
| ls -l, diretório | drwxrwx--- |
| Comando simbólico equivalente | chmod ug=rwx,o= |
| umask padrão que gera esse modo | umask 007 para diretórios novos |
| Como o Git registra um arquivo assim | 100755 (executável) |
| Bits especiais | Nenhum |
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
sudo chmod 770 /srv/app/data
sudo chmod ug=rwx,o= /srv/app/data # mesmo resultadostat -c '%a %A %n' /srv/app/data # Linux (stat do GNU): 770 drwxrwx---
stat -f '%Lp %Sp %N' /srv/app/data # macOS e BSDAplicando 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.