Skip to content

chmod 660

chmod 660 define rw-rw----: o dono e o grupo podem ler e gravar o arquivo, ninguém executa, e todas as outras contas ficam sem 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)SimSimNão6
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 e alterarSó listar nomes; a escrita não vale sem execução
Outros (o)Nenhum acessoNenhum acesso

Dados

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

Quando usar

  • Controle de acesso por grupo em dispositivos e sockets: portas seriais como /dev/ttyS0 são crw-rw---- root:dialout, e o socket do Docker é srw-rw---- root:docker. Entrar no grupo é o que dá o acesso.
  • Bancos ou arquivos de estado gravados por um serviço e por quem o opera, como um SQLite compartilhado entre a aplicação e um cron do mesmo grupo.
  • É o que os arquivos novos recebem com umask 007.

Quando não usar

  • Arquivos servidos diretamente pelo servidor web se a conta dele estiver fora do grupo: ele recebe permission denied.
  • Quando os membros do grupo só precisam ler, como configurações com credenciais: use 640 para que um leitor invadido não possa também reescrever.

Comandos

Aplicar em um arquivo ou diretório
chmod 660 app.sqlite
chmod ug=rw,o= app.sqlite   # mesmo resultado
Conferir o resultado
stat -c '%a %A %n' app.sqlite     # Linux (stat do GNU): 660 -rw-rw----
stat -f '%Lp %Sp %N' app.sqlite   # 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:

find . -type d -exec chmod 770 {} +
find . -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= ..

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 660?
Dono 6 (rw-), grupo 6 (rw-), outros 0 (---). Só o dono e os membros do grupo usam o arquivo.
Por que não consigo usar /dev/ttyUSB0 ou o docker sem sudo?
Os dois são 660 e pertencem a um grupo (dialout ou uucp nas portas seriais, docker no socket). Entre no grupo com sudo usermod -aG dialout $USER e faça login de novo. Lembre que estar no grupo docker equivale a ser root.
Uso 660 ou 640?
660 quando o grupo grava, 640 quando só lê.

Revisado em por Arielton Oberek.