Подавлять файлы восстановления при редактировании конфиденциальных файлов в vi, nvi и vim

Я пишу приложение, которое поддерживает зашифрованную базу данных, содержащую чрезвычайно чувствительную информацию, включая криптографические ключи и пароли. Приложение параноидально об использовании memlock, блокировании ptrace, предотвращении выводов и т. Д., Но имеет команду, позволяющую владельцу базы данных редактировать содержимое базы данных. Эта команда записывает всю базу данных во временный файл в формате ASCII, читаемом человеком, и позволяет пользователю редактировать его. В частности, он создает новый файл во вновь создаваемом каталоге /tmp/XXXXXXXX/ (где / tmp идеально представляет собой файловую систему с памятью), затем запускает предпочтительный редактор пользователя в файле. Когда редактор выходит, приложение анализирует содержимое файла и разбивает файл и все остальное в /tmp/XXXXXXXX/ перед окончательным удалением каталога.

К сожалению, эта стратегия не очень хорошо работает с любым из вариантов vi, потому что редактор заканчивает запись копий файла в /var/tmp/vi.recover, где они, вероятно, будут сохраняться на диске даже после того, как vi удалит их. (Данные содержат высокодоступные закрытые ключи, для которых было бы легко искать весь необработанный раздел.) Я ищу общий способ подавления этих файлов восстановления или, по крайней мере, переместить их в /tmp/XXXXXXXX/ .

Мое идеальное решение будет работать для большинства вариантов vi, но я также счастлив EDITOR переменную среды EDITOR и сделать что-то другое для каждого редактора. Следовательно, если у вас есть решение, которое работает на vim, но не на других, это, по крайней мере, хорошее начало. (Я уже специально для vim, чтобы повторно открыть редактор для точного номера столбца ошибки синтаксического анализа, тогда как другие варианты vi могут быть открыты только в соответствующей строке.)

Поскольку это приложение, которое будет распространяться среди других людей, единственное, что я не могу сделать, это решить проблему, отредактировав файлы .exrc или .vimrc. В абсолютном значении, я полагаю, я мог изменить переменную среды HOME перед тем, как запустить редактор и создать временный .vimrc, который объединяет реальный пользователь с некоторыми командами сокращения восстановления. Тем не менее, я бы предпочел решение командной строки или комментариев.

Самое близкое, что я могу привести к минимальному рабочему примеру, – это поделиться тем, что я делаю для emacs, который должен добавить следующий комментарий в конце файла:

 # Local Variables: # make-backup-files: nil # auto-save-default: nil # End: 

Хотя самым простым является вариант командной строки, если какой-то эквивалентный комментарий может работать для vim или любого другого варианта vi, это тоже было бы здорово.

Обновить:

После некоторых экспериментов с strace, кажется, что следующая команда может делать то, что я хочу для vim:

 vim -n -c 'set viminfo=' /tmp/XXX/secret.ini 

Однако он не работает с --cmd , который был предложенным вариантом, но только с -c . Более того, я действительно не понимаю, что-н, но только заметил, что на странице руководства говорится, что он сломает восстановление. Поэтому я все равно хотел бы услышать ответ от кого-то, кто хорошо разбирается в vim, если это действительно работает. И, конечно, приветствуются решения для других вариантов vi.

обновление 2:

Переменная среды EXINIT может работать для vi и nvi, если я устанавливаю ее в EXINIT=set dir=/tmp/XXX|set recdir= . nvi предупреждает об отсутствии восстановления при запуске, что обнадеживает, в то время как vi удаляет файлы в файловой системе, но по крайней мере они находятся в / tmp, который часто является файловой системой памяти.

  • положение курсора после вставки в vi / vim
  • Как отображать скрытые символы при вводе текста?
  • Отступ середины нескольких строк
  • Введите справа налево
  • Свернуть линию вертикально, чтобы каждое слово находилось на новой строке
  • Извлеките строки из файла с помощью vim или teminal
  • Проблемы с получением помощи в vim
  • номера поиска vim, содержащие определенное количество цифр
  • One Solution collect form web for “Подавлять файлы восстановления при редактировании конфиденциальных файлов в vi, nvi и vim”

    Для vim вы можете переместить местоположение файла восстановления с опцией directory .

     set directory=/tmp/XXXXXXXX 

    Это можно добавить в командную строку для одного экземпляра, подобного этому

     mkdir -m700 /tmp/xyz vim --cmd "set directory=/tmp/xyz" /path/to/secure.file 
    Linux и Unix - лучшая ОС в мире.