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
| Quem | Leitura (4) | Escrita (2) | Execução (1) | Dígito |
|---|---|---|---|---|
| Dono (u) | Sim | Não | Não | 4 |
| Grupo (g) | Sim | Não | Não | 4 |
| Outros (o) | Sim | Não | Não | 4 |
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 o conteúdo | Só listar nomes; não entra nem abre nada |
| Grupo (g) | Ler o conteúdo | Só listar nomes; não entra nem abre nada |
| Outros (o) | Ler o conteúdo | Só listar nomes; não entra nem abre nada |
Dados
| Octal | 444 (0444) |
|---|---|
| Simbólico | r--r--r-- |
| ls -l, arquivo | -r--r--r-- |
| ls -l, diretório | dr--r--r-- |
| Comando simbólico equivalente | chmod a=r |
| umask padrão que gera esse modo | Nenhum dos umasks comuns; defina explicitamente com chmod |
| Como o Git registra um arquivo assim | 100644 (não executável) |
| Bits especiais | Nenhum |
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
chmod 444 LICENSE
chmod a=r LICENSE # mesmo resultadostat -c '%a %A %n' LICENSE # Linux (stat do GNU): 444 -r--r--r--
stat -f '%Lp %Sp %N' LICENSE # macOS e BSDAplicando 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.