Se você tentar abrir um arquivo através de seu inode, isso ignorará qualquer travessia de diretório. O diretório transversal é necessário para determinar as permissões do arquivo e dos diretórios que levam a ele. Sem uma passagem de diretório, o kernel não tem como determinar se o processo de chamada tem permissão para acessar o arquivo.
Houve um patch proposto para o kernel Linux para permitir a criação de um link para um arquivo a partir de um descritor de arquivo . Foi rejeitado porque implementar isso com segurança seria extremamente difícil .
No Linux (e provavelmente em outras variantes unix pelo mesmo motivo), você não pode criar um link para um arquivo excluído, portanto, se um arquivo não tiver mais um nome, você não poderá adicioná-lo novamente.¹ abra um arquivo excluído abrindo os links mágicos em /proc/$pid/fd/
.
Se um arquivo não tiver mais nenhum link e não estiver mais aberto, ele não existirá mais e o espaço usado anteriormente por seus dados poderá ser recuperado a qualquer momento.
¹ Você pode fazer isso alterando os bytes diretamente no sistema de arquivos de uma maneira dependente do sistema de arquivos, por exemplo, com debugfs
para ext2 / ext3 / ext4. Isso requer acesso ao dispositivo no qual o sistema de arquivos é montado (ou seja, normalmente apenas o root pode tentar). No entanto, enquanto o debugfs pode acessar um arquivo por inode, isso não ajuda se o arquivo for excluído: o arquivo será realmente excluído se o aplicativo o fechar e executar o debugfs no modo de leitura e gravação em um sistema de arquivos montado é uma receita para desastre.