$ ls -lhd fooledYa/
d-wx------ #snip
A primeira coisa é a primeira: posso escrever no diretório (fazer novas entradas) e posso executar ( cd
) no diretório. Eu não posso ler o diretório, no entanto. O que isso significa não é intuitivo.
Quando você trabalha com diretórios em sistemas Unix, o diretório aponta para inodes , que são coisas diferentes da entrada do ponteiro . Ser capaz de seguir referências em uma árvore de diretórios é controlado pelo eXecute
bit. Para cada nível de diretório na árvore, o sistema operacional verifica o bit de execução antes de descer para o próximo nível.
Enquanto isso, o Read
bit controla o acesso ao conteúdo do inode. Tudo o que você pode referenciar em seu sistema de arquivos é uma entrada inode. Diretórios ou arquivos, eles apontam para um inode.
ls -ldi fooledYa/
121100226 d-wx------ #snip
Neste caso, o diretório inode é 121100226. A permissão de leitura informa se posso acessar esse arquivo inode no espaço do usuário para ler seu conteúdo. O conteúdo do diretório inode é a referência a outros arquivos. O kernel sempre pode ler isso. Você, como usuário, é controlado pelas decisões do kernel em relação às entradas dentro dele.
Assim, como ls
tenta ler o conteúdo para me informar o que está lá (conforme marcado pelo Read
flag), isso é negado. Desde que eu ainda tenho eXecute
permissão, no entanto, o kernel irá permitir-me atravessar para arquivos que eu especificar se os diretórios acima do arquivo que eu quero todos permitem-me eXecute
neles, independentemente se eu posso lê-los para ver qual a referência.
Portanto, para resumir para diretórios, pense em executar como uma permissão principal. Sem isso, você não pode entrar no diretório para fazer nada. Depois disso, pense neles como um arquivo de duas colunas. Se você tiver permissão de leitura, poderá ver as entradas. Se você tiver permissão de gravação, poderá adicionar ou remover entradas. Se você não tiver essas duas permissões, mas tiver executado, poderá fazer referências a entradas na lista, mas não poderá ler a lista.
Este é um bom exemplo ilustrativo de inodes e como eles representam referências de diretório e bloco de arquivos em referências de disco: link