Skip to content

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

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)SimSimNão6

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)Ler e alterarSó listar nomes; a escrita não vale sem execução

Dados

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

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

Aplicar em um arquivo ou diretório
chmod 666 notes.txt
chmod a=rw notes.txt   # mesmo resultado
Conferir o resultado
stat -c '%a %A %n' notes.txt     # Linux (stat do GNU): 666 -rw-rw-rw-
stat -f '%Lp %Sp %N' notes.txt   # macOS e BSD

Aplicando 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.

Voltar uma árvore para a base 755 / 644
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.