Skip to content

chmod 444

chmod 444 define r--r--r--: o dono, o grupo e todos os demais podem ler o arquivo, e ninguém pode alterá-lo nem 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)SimNãoNão4
Grupo (g)SimNãoNão4
Outros (o)SimNãoNão4

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 o conteúdoSó listar nomes; não entra nem abre nada
Grupo (g)Ler o conteúdoSó listar nomes; não entra nem abre nada
Outros (o)Ler o conteúdoSó listar nomes; não entra nem abre nada

Dados

Representações deste modo
Octal444 (0444)
Simbólicor--r--r--
ls -l, arquivo-r--r--r--
ls -l, diretóriodr--r--r--
Comando simbólico equivalentechmod a=r
umask padrão que gera esse modoNenhum dos umasks comuns; defina explicitamente com chmod
Como o Git registra um arquivo assim100644 (não executável)
Bits especiaisNenhum

Quando usar

  • Conteúdo que nunca deve mudar depois de gravado. O Git guarda os objetos soltos em .git/objects como -r--r--r--, já que um objeto com conteúdo alterado não bateria mais com o próprio hash.
  • Arquivos de referência que você quer proteger das próprias edições acidentais: a maioria dos editores abre em modo leitura ou avisa antes de gravar.

Quando não usar

  • Como proteção contra exclusão: o rm só precisa de escrita no diretório. Ele pergunta "remove write-protected regular file?" e apaga se você confirmar; o rm -f nem pergunta.
  • Arquivos com segredos: qualquer conta lê. Use 400 ou 440.

Comandos

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

Aplicando numa árvore inteira

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

find . -type d -exec chmod 555 {} +
find . -type f -exec chmod 444 {} +

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 a=rX ..

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 444?
Dono 4, grupo 4, outros 4: só leitura, r--r--r--.
Como editar um arquivo com permissão 444?
Se você for o dono, rode chmod u+w arquivo (ou chmod 644), edite e, se quiser, volte o modo. Senão, precisa do dono ou do root.
O 444 torna o arquivo imutável?
Não. O dono muda o modo, o root ignora a permissão e quem tem escrita no diretório pode apagar ou substituir o arquivo. Para imutabilidade de verdade no Linux use chattr +i como root.

Revisado em por Arielton Oberek.