A relação entre permissão de execução em um diretório e sua estrutura inode

0

Minha pergunta lida com o relacionamento entre os bits de leitura e execução em um diretório. Eu vou dar minhas suposições, em primeiro lugar, tudo de acordo com o meu conhecimento atual, então pergunte minha pergunta em negrito no contexto dessas suposições. Por favor, sinta-se livre para corrigir quaisquer suposições incorretas:

  1. Arquivos e diretórios são armazenados usando inodes.
  2. Arquivos e diretórios têm permissões (vamos nos concentrar apenas nos bits rwx, esquecendo o sticky, setuid, setguid (a menos que sejam relevantes)).
  3. O conteúdo dos blocos de dados do inode de um diretório armazena um mapeamento de nomes de arquivos para números de inode.
  4. A permissão de leitura em um diretório permite que um usuário obtenha uma lista dos nomes de todos os arquivos nesse diretório.
  5. O usuário deve saber o número de inode de um arquivo para acessar seu conteúdo. ATUALIZAÇÃO: O significado da declaração original aqui não reflete o que eu pretendia expressar. O que eu quis dizer é mais ao longo das linhas de: O usuário não precisa saber o número de inode de um arquivo, mas o usuário deve ter permissão para obter um inode para um determinado nome de arquivo para obter o conteúdo do arquivo .
  6. Executar permissão em um diretório permite que um usuário "use" esse diretório, e eu entendo que especificamente significa obter o número de inode do diretório (eu gostaria de confirmar minha compreensão disso). Isso permitirá que o usuário faça coisas como cd nesse diretório, que é o exemplo prototípico dado sobre o que um usuário precisa da permissão de execução.

Dado que um usuário deve ser capaz de obter o "conteúdo" de um diretório (realmente o conteúdo dos blocos de dados do inode do diretório) para obter acesso à listagem do diretório, e que o usuário deve saber o número do inode do diretório para obter acesso a seu conteúdo, por que um usuário ainda pode obter uma listagem de diretório sem ter permissão de execução no diretório? Parece que obter uma listagem do conteúdo de um diretório D requer < em> temporariamente procurando seu número de inode para ler o conteúdo dos blocos de dados do inode. Além disso, parece necessário que a permissão de leitura implique permissão de execução em um diretório.

    
por BlueBomber 17.01.2013 / 06:05

1 resposta

2

Eu tive um pequeno desentendimento, o que invalida meu ponto 6 acima. O bit de execução (também conhecido como "pesquisa") em um diretório é necessário para obter os números de inode dos arquivos que ele contém, mas não seu próprio número de inode .

Citação:

You can think of read and execute on directories this way: directories are data files that hold two pieces of information for each file within, the file's name and it's inode number. Read permission is needed to access the names of files in a directory. Execute (a.k.a. search) permission is needed to access the inodes of files in a directory, if you already know the file's name.

Referências:

  1. link
  2. link
  3. link
por 17.01.2013 / 16:23