Restrição de acesso à sobregravação de processo

2

Eu quero executar um programa para que ele possa apenas criar novos arquivos e não substituir os existentes.

Existe algo assim?

$ fsaccess --can read,write --not overwrite --command bash -c 'echo "stuff" > filetim; echo "Woohoo I did it"'

Agora, se o filetim não existe, então o comando deve rodar bem, mas se o filetim existir, então o fsaccess sairá com uma mensagem como

Killed child! Command tried to overwrite a file. It does not have permission to do that!
    
por DanielTA 26.11.2013 / 05:41

1 resposta

0

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 .

    
por 27.11.2013 / 01:02