Переопределить ограничение доступа к технологическому процессу

Я хочу запустить программу, чтобы она могла создавать только новые файлы и не перезаписывать существующие.

Что-то вроде этого существует?

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

Теперь, если filetim не существует, команда должна работать нормально, но если filetim существует, то fsaccess выйдет с сообщением типа

 Killed child! Command tried to overwrite a file. It does not have permission to do that! 

Если вы хотите, чтобы процесс мог создавать новые файлы, но не перезаписывать ранее существовавшие файлы, запустите его как выделенный пользователь и не дайте этому пользователю права на запись в любом месте, кроме как в некоторых изначально пустых каталогов. Таким образом, у программы не будет разрешения на перезапись любого ранее существующего файла.

Если вы хотите запустить программу и позволить ей притворяться, что она перезаписывает файлы, когда это не так, дайте ей доступ на запись только к выделенным каталогам, как указано выше, но, кроме того, вы можете использовать файловую систему union, такую ​​как aufs , funionfs , unionfs-fuse , …, чтобы другая программа отображалась в программе.

Если вы хотите сохранить все предыдущие версии файлов, перезаписанных процессом, ограничьте этот процесс файловой системой copyfs , которая сохранит все предыдущие версии всех файлов.

Если вам действительно нужно разрешить процессу создавать новые файлы, но не перезаписывать файлы, даже свои собственные, я не думаю, что вы найдете что-либо существовавшее ранее. Вы можете написать свою собственную файловую систему FUSE .