chmod 666
chmod 666 define rw-rw-rw-: o dono, o grupo e qualquer outra conta podem ler e gravar o arquivo, e ninguém pode executá-lo.
Matriz de permissões
| Quem | Leitura (4) | Escrita (2) | Execução (1) | Dígito |
|---|---|---|---|---|
| Dono (u) | Sim | Sim | Não | 6 |
| Grupo (g) | Sim | Sim | Não | 6 |
| Outros (o) | Sim | Sim | Não | 6 |
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 e alterar | Só listar nomes; a escrita não vale sem execução |
| Grupo (g) | Ler e alterar | Só listar nomes; a escrita não vale sem execução |
| Outros (o) | Ler e alterar | Só listar nomes; a escrita não vale sem execução |
Dados
| Octal | 666 (0666) |
|---|---|
| Simbólico | rw-rw-rw- |
| ls -l, arquivo | -rw-rw-rw- |
| ls -l, diretório | drw-rw-rw- |
| Comando simbólico equivalente | chmod a=rw |
| umask padrão que gera esse modo | umask 000 para arquivos novos |
| Como o Git registra um arquivo assim | 100644 (não executável) |
| Bits especiais | Nenhum |
Quando usar
- Dispositivos que todo processo precisa abrir para escrita: /dev/null, /dev/zero e /dev/tty são crw-rw-rw- no Linux. Quem decide o efeito da escrita é o kernel, não o arquivo.
- É o modo dos arquivos novos com umask 000, já que os programas criam arquivos com 666 e esse umask não remove nada.
Quando não usar
- Arquivos comuns em qualquer máquina compartilhada ou exposta à internet: qualquer conta ou serviço invadido reescreve configurações, logs ou templates. Um PHP ou template gravável é execução remota de código esperando para acontecer.
- Arquivos de log: qualquer usuário apaga rastros ou injeta entradas falsas. Use 640 com um grupo adm ou de logs.
- Como remendo para um serviço que não consegue gravar: torne a conta do serviço dona ou membro do grupo e use 664 ou 660.
Comandos
chmod 666 notes.txt
chmod a=rw notes.txt # mesmo resultadostat -c '%a %A %n' notes.txt # Linux (stat do GNU): 666 -rw-rw-rw-
stat -f '%Lp %Sp %N' notes.txt # macOS e BSDAplicando numa árvore inteira
Evite chmod -R 666: ele tira a execução de todos os diretórios, e aí só o root consegue entrar neles, além de deixar todo arquivo gravável por todos. Para consertar uma árvore que recebeu isso, use os comandos find abaixo.
find . -type d -exec chmod 755 {} +
find . -type f -exec chmod 644 {} +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 666?
- Dono 6 (leitura 4 + escrita 2), grupo 6, outros 6. Todos leem e gravam; ninguém executa.
- Por que o /dev/null é 666?
- Todo programa, com qualquer usuário, precisa conseguir escrever no /dev/null para descartar saída. É um dispositivo de caractere: a permissão controla quem pode abri-lo, e o que é escrito ali é descartado.
- Outros podem apagar um arquivo 666?
- Apagar depende do diretório, não do arquivo. Num diretório 755 só o dono do diretório apaga, mas qualquer um pode esvaziar o arquivo com uma escrita como : > notes.txt.
Revisado em por Arielton Oberek.