Linux: Existe alguma forma de evitar a 'Eliminação'/'Renomeação' de um ficheiro aberto?
No Unix/Linux os atributos de um arquivo (seu nome, e até mesmo sua existência) são desacoplados de seu uso. Aqueles usuários que têm permissão apropriada no diretório contendo um arquivo são livres para movê-lo dentro do seu sistema de arquivos (com o mesmo nome ou com um diferente) ou para apagá-lo. Nenhuma das operações tem qualquer efeito sobre um processo que tenha o arquivo em questão aberto. Isto porque o caminho de um ficheiro é apenas um meio de o localizar em primeiro lugar. Uma vez que o arquivo tenha sido aberto, um descritor de arquivo (ou um ponteiro de arquivo) é usado para posteriormente referenciar os dados.
Note que em um sistema Unix a exclusão de um arquivo nada mais faz do que invocar "unlink" que simplesmente decreta a contagem do link file's. Isto porque o que se considera como o nome do arquivo nada mais é do que um link rígido para o arquivo real. Pode haver qualquer número de tais links, conservando assim espaço em disco, uma vez que existe apenas uma única instância do conteúdo do arquivo. Links rígidos são constrangidos a permanecer dentro do mesmo sistema de arquivos (exceto para Apple's OS X, que levantou esta constrangimento para suportar Time Machine).
Apenas quando a contagem de links vai para zero o sistema de arquivos esquece aquele arquivo. Eu digo "esquecer" já que isso é tudo o que certamente vai acontecer então...o uso contínuo dos dados desse arquivo não é afetado. Ou seja, quando ainda há um processo que tem aquele arquivo aberto ele irá alegremente continuar em seu caminho...funcionando muito bem. O sistema operacional só liberará o espaço em disco subjacente quando todos os processos que o têm anexados o fecharem ou forem encerrados. Por causa disso, às vezes se vê um uso maior em um sistema de arquivos do que pode ser contabilizado a partir do exame da estrutura de diretórios!
Dado então acima, poderia ser bom se alguém pudesse "apagar" um arquivo, continuar a usá-lo, e mais tarde (confiando que nenhum evento incoveniente tenha intervindo) colocar um nome de arquivo nesses dados. Infelizmente (felizmente?) o Unix não fornece nenhum meio para reatacar tais dados. (O novo conjunto de chamadas baseadas em directório-arquivo-descritor ("*at") também requer um nome de ficheiro). Assim, a melhor abordagem é esconder arquivos da melhor forma possível.
Artigos semelhantes
- Existe alguma forma de reprogramar e editar o ficheiro apk para esconder o ícone após a instalação?
- Existe alguma forma de exportar um chat de grupo inteiro do Google Hangout do Gmail para um ficheiro .txt ou a.PDF?
- Como obter um Cartão de Segunda Renomeação sem uma compra no PUBG mobile
- Existe alguma forma de evitar que alguém 'falsifique' o identificador de chamadas usando o seu número?