Se você quiser que um processo possa criar novos arquivos, mas não substituir arquivos pré-existentes, execute-o como um usuário dedicado e não permita que este usuário tenha acesso de gravação em nenhum lugar, exceto em alguns diretórios inicialmente vazios. Dessa forma, o programa não terá permissão para sobrescrever qualquer arquivo pré-existente.
Se você quiser executar um programa e permitir que ele sobrescreva arquivos quando não estiver, dê acesso de gravação apenas aos diretórios dedicados, como acima, mas, além disso, você pode usar um sistema de arquivos daun , como aufs , funionfs , unionfs- fusível ,…, para fazer com que outra hierarquia apareça também no programa.
Se você quiser manter todas as versões anteriores dos arquivos sobrescritas por um processo, restrinja-o a um sistema de arquivos copyfs , que retém todas as versões anteriores de todos os arquivos.
Se você realmente precisa permitir que o processo crie novos arquivos, mas não sobrescreva arquivos, mesmo os seus, não acho que você encontrará algo preexistente. Você poderia escrever seu próprio sistema de arquivos FUSE .