chmod 555
chmod 555 define r-xr-xr-x: o dono, o grupo e todos os demais podem ler e executar (listar e entrar no diretório), e ninguém pode gravar.
Matriz de permissões
| Quem | Leitura (4) | Escrita (2) | Execução (1) | Dígito |
|---|---|---|---|---|
| Dono (u) | Sim | Não | Sim | 5 |
| Grupo (g) | Sim | Não | Sim | 5 |
| Outros (o) | Sim | Não | Sim | 5 |
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 executar | Listar, entrar e abrir itens |
| Grupo (g) | Ler e executar | Listar, entrar e abrir itens |
| Outros (o) | Ler e executar | Listar, entrar e abrir itens |
Dados
| Octal | 555 (0555) |
|---|---|
| Simbólico | r-xr-xr-x |
| ls -l, arquivo | -r-xr-xr-x |
| ls -l, diretório | dr-xr-xr-x |
| Comando simbólico equivalente | chmod a=rx |
| umask padrão que gera esse modo | Nenhum dos umasks comuns; defina explicitamente com chmod |
| Como o Git registra um arquivo assim | 100755 (executável) |
| Bits especiais | Nenhum |
Quando usar
- Diretórios cujo conteúdo não pode mudar: no Linux, /proc e /sys aparecem como dr-xr-xr-x, e o próprio kernel cria o que existe dentro deles.
- Builds publicados ou ferramentas vendorizadas que nunca devem ser editados no lugar; uma árvore protegida contra escrita transforma uma edição ou rm acidental em erro, em vez de mudança silenciosa.
Quando não usar
- Como proteção contra o dono ou o root: o dono pode rodar chmod de novo quando quiser, e o root ignora a permissão de escrita.
- Diretórios onde a aplicação grava cache ou logs: toda escrita falha com permission denied.
- Arquivos de dados comuns: o par para arquivos é 444, sem os bits de execução.
Comandos
chmod 555 release
chmod a=rx release # mesmo resultadostat -c '%a %A %n' release # Linux (stat do GNU): 555 dr-xr-xr-x
stat -f '%Lp %Sp %N' release # 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 release -type d -exec chmod 555 {} +
find release -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 release.
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 100755; 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 555?
- Dono 5 (leitura 4 + execução 1), grupo 5, outros 5: r-xr-xr-x. Ninguém tem escrita.
- Consigo apagar um arquivo dentro de um diretório 555?
- Não. Criar, apagar e renomear itens exige escrita no diretório, e o 555 não tem. O root ainda consegue.
- Como deixar um diretório 555 gravável de novo?
- Como dono, rode chmod u+w nele (ou chmod 755). O dono sempre pode mudar o modo dos próprios arquivos.
Revisado em por Arielton Oberek.