Você não pode detectar ou criar tais arquivos em geral. Eles existem apenas porque um sistema de arquivos está relatando dados inconsistentes.
Na ausência de modificações no sistema de arquivos, há redundâncias entre várias maneiras de obter informações sobre os arquivos nesse sistema de arquivos. Por exemplo, permissões permitindo:
- Se um nome de arquivo for relatado por
readdir
, chamarlstat
nesse nome será bem-sucedido. - Se
lstat
não informar que o arquivo é um link simbólico, chamarstat
eopen
também será bem-sucedido. - Se
stat
for bem-sucedido, entãoopen
terá êxito '. - Se
open
for bem-sucedido, o mesmo acontecerá comstat
elstat
. - Se
stat
informar que um arquivo é um diretório, entãocd
será bem-sucedido e vice-versa.
E assim por diante. Quando um sistema de arquivos Reiserfs omite a entrada .reiserfs_priv
das listagens de diretório e ainda relata isso como um diretório através de chamadas de sistema que o acessam diretamente, o sistema de arquivos está relatando informações inconsistentes.
Esta informação não está errada, apenas inconsistente. Está violando apenas convenções, não regras. O mesmo comportamento poderia ser observado se houvesse um goblin muito rápido que criasse o diretório antes de executar cd
ou ls .reiserfs_priv
e o removesse antes de executar find
.
É uma forma um pouco ruim para um sistema de arquivos reportar dados inconsistentes, porque isso confunde alguns aplicativos e usuários, então isso deve ser feito apenas por uma razão muito boa. No caso do Reiserfs, o motivo é tornar algumas informações bastante ocultas e, em particular, não serem percorridas por pesquisas e indexação de arquivos. Isso é útil porque o conteúdo de .reiserfs_priv
não é "real", é usado para armazenar atributos de arquivo estendidos , que são acessados chamando a família de chamadas do sistema *xattr
. Na verdade, não sei por que é exposto - talvez apenas para fins de depuração.
Outro exemplo de não reportar arquivos que existem são os sistemas de arquivos que permitem que os mesmos dados sejam retornados de maneiras diferentes. Por exemplo, o ciopfs apresenta uma visão não sensível a maiúsculas e minúsculas de um sistema de arquivos; se você tiver um arquivo chamado Foo
, uma listagem de diretórios listará apenas Foo
, mas o acesso a foo
, FOO
, etc. será bem-sucedido.