Skip to content

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

Quais bits de permissão cada classe tem
QuemLeitura (4)Escrita (2)Execução (1)Dígito
Dono (u)SimNãoSim5
Grupo (g)NãoNãoNão0
Outros (o)NãoNãoNão0

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 e executarListar, entrar e abrir itens
Grupo (g)Nenhum acessoNenhum acesso
Outros (o)Nenhum acessoNenhum acesso

Dados

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

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

Aplicar em um arquivo ou diretório
chmod 500 bin
chmod u=rx,go= bin   # mesmo resultado
Conferir o resultado
stat -c '%a %A %n' bin     # Linux (stat do GNU): 500 dr-x------
stat -f '%Lp %Sp %N' bin   # macOS e BSD

Aplicando 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.