chmod 500
chmod 500 define r-x------: o dono pode ler e executar (listar e entrar no diretório), mas não gravar, e o grupo e os demais não têm acesso.
Matriz de permissões
| Quem | Leitura (4) | Escrita (2) | Execução (1) | Dígito |
|---|---|---|---|---|
| Dono (u) | Sim | Não | Sim | 5 |
| 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) | Ler e executar | Listar, entrar e abrir itens |
| Grupo (g) | Nenhum acesso | Nenhum acesso |
| Outros (o) | Nenhum acesso | Nenhum acesso |
Dados
| Octal | 500 (0500) |
|---|---|
| Simbólico | r-x------ |
| ls -l, arquivo | -r-x------ |
| ls -l, diretório | dr-x------ |
| Comando simbólico equivalente | chmod u=rx,go= |
| 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
- Um diretório privado de scripts ou binários que não deve ser alterado por acidente, como um bin com ferramentas já revisadas.
- Scripts privados com credenciais embutidas que devem rodar, nunca ser editados no lugar e nunca ser lidos por outros.
Quando não usar
- Diretórios onde o dono ou seus programas criam arquivos: a escrita falha até você adicionar u+w.
- Qualquer coisa que outra conta precise alcançar, inclusive um serviço que roda com outro usuário.
- Arquivos de dados: use 400.
Comandos
chmod 500 bin
chmod u=rx,go= bin # mesmo resultadostat -c '%a %A %n' bin # Linux (stat do GNU): 500 dr-x------
stat -f '%Lp %Sp %N' bin # macOS e BSDAplicando numa árvore inteira
O chmod -R colocaria o mesmo modo em arquivos e diretórios. Defina os diretórios como 500 e os arquivos como 400 separadamente:
find bin -type d -exec chmod 500 {} +
find bin -type f -exec chmod 400 {} +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 u=rX,go= bin.
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 500?
- Dono 5 (leitura 4 + execução 1), grupo 0, outros 0: r-x------.
- O root ainda lê ou altera um arquivo 500?
- Sim. O root ignora as checagens de leitura e escrita, e pode executar o arquivo porque existe pelo menos um bit de execução.
- Qual a diferença entre 500 e 700?
- A escrita do dono. Com 500 nem o dono altera o arquivo ou cria itens no diretório até mudar o modo.
Revisado em por Arielton Oberek.