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.
Read bit = Se definido, você pode ler esta lista. Então, por exemplo, se você tem um diretório chamado poems
:
- Você pode
ls poems
e obterá uma lista de itens que vivem dentro de ( -l
não revelará nenhum detalhe!).
- Você pode usar a conclusão da linha de comando, por exemplo,
touch poems/so <TAB> poems/somefile
.
- Você não pode tornar
poems
seu diretório de trabalho (por exemplo, cd
).
Gravar bit = Se definido, você pode modificar essa lista, ou seja, você pode {adicionar, renomear, excluir} nomes nela. Mas! Você só pode fazer isso se o bit de execução estiver definido também.
Executar bit = Torne este diretório seu diretório de trabalho, ou seja, cd
nele. Você precisa dessa permissão se quiser:
- acessa (lê, escreve, executa) itens que vivem dentro.
- modifica a lista, isto é, adiciona, renomeia, apaga nomes (obviamente, o bit de gravação deve ser definido no diretório).
Caso interessante 1 : se você tiver permissões de gravação + execução em um diretório, poderá {excluir, renomear} itens que residem mesmo que você não tenha permissão de gravação nesses itens. (use um pouco pegajoso para evitar isso)
Caso interessante 2 : Se você tiver permissão para executar (mas não para gravação) em um diretório E tiver permissão de gravação em um arquivo que esteja dentro dele, não será possível excluí-lo. a 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:
Lê bit = Você pode ler os nomes na lista.
Gravar bit = Você pode {adicionar, renomear, deletar} nomes na lista SE o O bit de execução está definido também.
Execute bit = Você pode tornar este diretório seu diretório de trabalho.
PS: O artigo mencionado por KAK é uma boa leitura.