Primeiro, pense: O que é um diretório? É apenas uma lista de itens (arquivos e outros diretórios) que vivem dentro. Então: diretório = lista de nomes.
Ler bit = Se definido, você pode ler esta lista. Então, por exemplo, se você tiver um diretório chamado poems
:
- Você pode
ls poems
e obterá uma lista de itens que vivem nele ( -l
não revelará detalhes!).
- Você pode usar a conclusão da linha de comando, por exemplo
touch poems/so <TAB> poems/somefile
.
- Você não pode criar
poems
seu diretório de trabalho (ou seja, cd
nele).
Write bit = Se definido, você pode modificar esta lista, ou seja, você pode {adicionar, renomear, excluir} nomes nela. Mas! Na verdade, você pode fazer isso apenas se o bit de execução também estiver definido.
Execute bit = Torne este diretório seu diretório de trabalho, ou seja, cd
nele. Você precisa dessa permissão se desejar:
- acessar (ler, escrever, executar) itens que vivem nele.
- modificar a própria lista, ou seja, adicionar, renomear, excluir nomes nela (é claro que o bit de gravação deve estar definido no diretório).
Caso interessante 1 : se você tiver permissões de gravação + execução em um diretório, pode {excluir, renomear} itens que residem mesmo que você não tenha permissão de gravação nesses itens. (use bit adesivo para evitar isso)
Caso interessante 2 : se você tem permissão de execução (mas não de gravação) em um diretório E você tem permissão de gravação em um arquivo que vive dentro dele, não pode excluir o arquivo (porque envolve removê-lo da lista). No entanto, você pode apagar seu conteúdo, por exemplo, se for um arquivo de texto, você pode usar o vi para abri-lo e excluir tudo. O arquivo ainda estará lá, mas estará vazio.
Resumo:
Ler bit = Você pode ler os nomes na lista.
Write bit = Você pode {adicionar, renomear, excluir} nomes na lista SE o bit de execução também estiver definido.
Executar bit = Você pode tornar este diretório seu diretório de trabalho.
PS: O artigo mencionado por Kusalananda é uma boa leitura.