chmod 000
chmod 000 define ---------: dono, grupo e demais perdem leitura, escrita e execução, então só o root (que ignora essas checagens) abre o arquivo, e só o dono ou o root podem mudar o modo de volta.
Matriz de permissões
| Quem | Leitura (4) | Escrita (2) | Execução (1) | Dígito |
|---|---|---|---|---|
| Dono (u) | Não | Não | Não | 0 |
| Grupo (g) | Não | Não | Não | 0 |
| Outros (o) | Não | Não | Não | 0 |
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) | Nenhum acesso | Nenhum acesso |
| Grupo (g) | Nenhum acesso | Nenhum acesso |
| Outros (o) | Nenhum acesso | Nenhum acesso |
Dados
| Octal | 000 (0000) |
|---|---|
| Simbólico | --------- |
| ls -l, arquivo | ---------- |
| ls -l, diretório | d--------- |
| Comando simbólico equivalente | chmod a= |
| 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
- Arquivos que só o root deve tocar: no Fedora e no RHEL o /etc/shadow é ----------, e as ferramentas que o atualizam rodam como root.
- Colocar em quarentena um upload suspeito ou desativar um script sem apagar, para que nada rodando como usuário comum consiga ler ou executar.
Quando não usar
- Como proteção contra o root: o root continua lendo e gravando.
- Em diretórios que você ainda usa: nem o dono consegue listar ou entrar até rodar chmod de novo.
- Como forma de esconder um arquivo: nome, tamanho e dono continuam visíveis para quem lista o diretório.
Comandos
chmod 000 quarantine.bin
chmod a= quarantine.bin # mesmo resultadostat -c '%a %A %n' quarantine.bin # Linux (stat do GNU): 0 ----------
stat -f '%Lp %Sp %N' quarantine.bin # macOS e BSDAplicando numa árvore inteira
Um chmod -R 000 trava no primeiro nível: quando um diretório vira 000, o chmod nem consegue olhar dentro dele como usuário comum. Raramente há motivo para isso; para trancar uma árvore, use 700 no diretório de cima.
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 o chmod 000 faz?
- Zera os nove bits de permissão. Usuários comuns, incluindo o dono, recebem permission denied; o root ainda lê e grava.
- chmod 000 é igual a chmod 0000?
- Em arquivos comuns, sim. Em diretórios o chmod do GNU mantém um setuid ou setgid existente com 000 ou 0000; use cinco dígitos (00000) ou chmod a-s para zerar também esses bits.
- Como desfazer um chmod 000?
- Como dono, rode chmod 644 num arquivo ou chmod 755 num diretório. Não é preciso ter leitura no arquivo para mudar o modo dele.
Revisado em por Arielton Oberek.