Como alguém cria um diretório que não pode ser visto e só pode ser acessado através de seu nome de caminho absoluto?

6

Estou trabalhando em uma tarefa para adicionar suporte de tempo a um sistema UNIX padrão. Parte disso, no entanto, envolve proteger o local dos arquivos de backup (que definimos para estar na raiz do sistema por padrão), tornando-os invisíveis, mesmo através de um comando como "ls -al" e só pode ser acessado especificando seu nome de caminho absoluto. Aqui está a citação original:

Finally, historical directories should be "virtual", in the sense that they do not appear when examining the contents of the inode representing the root directory or when performing a command like "ls -al /", and are only accessible through a direct chdir() ("cd") operation to a historical pathname.

Eu tenho andado pela API do sistema de arquivos UNIX, mas não encontrei uma maneira de reforçar isso (estou pensando que um programa de linha de comando ou uma combinação deles em um script bash poderia fazer o trabalho) . Estou pensando na direção errada?

Gostaria de receber sugestões ou dicas na direção certa, obrigado :)

    
por blazonix 16.04.2014 / 17:18

2 respostas

7

Você pode remover a permissão de leitura de um diretório. Nesse caso, ainda é possível acessar seu conteúdo (arquivos ou subdiretórios, dado que suas permissões permitem isso), mas você deve saber (ou: tentar ...) seu nome como listagem do conteúdo do diretório não é mais possível. / p>     

por 16.04.2014 / 17:21
5

Você pode impedir que usuários não raiz listem o conteúdo de um diretório e, ao mesmo tempo, permitir que eles acessem arquivos nesse diretório fornecendo a permissão x , mas não r . Para um diretório, r (“read”) significa que você pode listar o conteúdo, enquanto x significa que você pode acessar arquivos no diretório ou cd nele. No entanto, isso não parece ser o que a atribuição significa, já que não está se referindo a permissões.

Com sistemas de arquivos normais, as entradas em um diretório são aquelas que aparecem na lista de diretórios. No entanto, se você controlar o driver do sistema de arquivos, poderá violar essa convenção. Aqui estão alguns exemplos que você pode encontrar na natureza:

  • Em um sistema de arquivos que não diferencia maiúsculas de minúsculas, em um diretório cuja listagem mostre apenas um arquivo Foo , você também pode acessar arquivos chamados FOO , fOO etc. Eles são todos iguais porque o driver do sistema de arquivos é projetado dessa maneira.
  • Alguns automounters reagem a um nome de diretório e tentam uma montagem de acordo. Por exemplo, um montador automático configurado para NFS geralmente decide que, quando você acessa /amnt/myserver/somedir , ele tenta montar myserver:/somedir , o que traz os diretórios /amnt/myserver e /amnt/myserver/somedir à existência.
  • Em AVFS , se um arquivo for reconhecido como um arquivo morto, você poderá acessá-lo como um diretório, mas o falso o nome do diretório não aparece na listagem de diretórios: se ls ~/.avfs/path/to mostrar foo.zip , então, também existe um diretório ~/.avfs/path/to/foo.zip# .
  • Alguns sistemas de instantâneos do sistema de arquivos operam da maneira descrita pela sua atribuição: se você acessar um diretório /snapshot/20140415022342 ou /snapshot/yesterday , obterá o instantâneo mais recente antes do tempo especificado.
por 17.04.2014 / 03:07

Tags