Подавлять файлы восстановления при редактировании конфиденциальных файлов в 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, который часто является файловой системой памяти.

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 
  • Как автоматически установить на исполняемый бит для определенного файла
  • Скрипт для открытия соответствующих pdf-файлов для ключей bibtex в Vim
  • Не удалось установить vim на RasPi (Raspbian GNU / Linux 7)
  • Отправка команд на dbx из Vim
  • VIM заменяет backspace на ^?
  • Отключить vi от перехода к последней посещаемой строке при открытии файла.
  • Есть ли способ открыть открытые текстовые поля Google Chrome в vim?
  • Поиск круглых скобок с% в vim по линиям
  • Что такое vi эквивалент команды «set ruler» vim?
  • Становление корня изнутри Vim
  • vim: можно открыть зашифрованный файл с помощью cli?
  • Interesting Posts

    Автоматически memtest и затем загружать

    таинственная авария программы: где искать подсказки?

    Как получить информацию о чтении / записи диска без новых зависимостей?

    Как остановить веб-сайты от буферизации и автовоспроизведения видео в Firefox?

    Проблема с sed-подстановкой в ​​многословном регулярном выражении

    grep два условия, один отрицательный, без трубопровода?

    Нет звука от Debian рядом с звуковыми сигналами

    Невозможно понизить ядро ​​Linux: недостаточно свободного места на диске

    Убедитесь, что машина была перезагружена

    Настройка сервера tftp для нескольких клиентов

    Почему tcpdump захватывает многие пакеты с помощью «(tcp-syn)! = 0», но не с «tcp & (tcp-syn)! = 0"

    Как найти мусорную корзину Nautilus в файловой системе

    Когда я набираю текст на английском языке, он подчеркивается и ведет себя странно

    Почему остановка не выключает машину?

    Где я могу найти самый последний словарь стандартных полей событий аудита Linux?

    Linux и Unix - лучшая ОС в мире.