Tmux и encryptfs вызывают появление «(недоступных)» каталогов при повторном подключении

Tmux и encryptfs вызывают появление «(недоступных)» каталогов при повторном подключении

Я использую сервер Ubuntu 13.04 с зашифрованным домашним каталогом (encryptfs). Я держу открытым сеанс tmux, в котором находится моя среда разработки (vim и т. д.). Когда я отключаюсь, я отключаю сеанс tmux, а затем отключаю соединение ssh. Позже, когда я снова подключаюсь и снова присоединяю сеанс tmux, я получаю такие ошибки:

fatal: Could not change back to '(unreachable)/*****': No such file or directory

Это часто означает, что vim (который был открыт в отсоединенном состоянии) сохраняет файл в неправильном месте и фактически не записывает файл на диск, а только в «недоступный» каталог, который кажется временным.

Если я побегупвд' из bash (ничего больше не делаю с момента повторного присоединения) получаю нужный каталог/дом/***/***. Если я запускаю 'git status', я получаю сообщение выше (такой файл отсутствует), а если я ':пароль' изнутри vim я получаю "(недоступно)/***".

Временным решением этой проблемы является запуск 'CD .' перед запуском любых других команд, что позволяет git/vim/etc фактически видеть каталог. Это довольно неудобно, так как у меня часто открыто много панелей/экранов в tmux, и мне пришлось бы запустить 'CD .' на каждом из них каждый раз, когда я переподключаюсь. И вдобавок ко всему, мне придется убедиться, что vim или что-то еще закрыто, прежде чем я отключусь, иначе я, скорее всего, потеряю данные, если не буду осторожен.

Я где-то видел другую ветку, в которой это связывалось с отключением encryptfs.$ДОМОЙпри выходе из системы, но ответов не было. Это кажется возможной причиной, но я понятия не имею, с чего начать. Есть ли помощь?

решение1

Если достаточно, чтобы ваш защищенный ecryptfs домашний каталог не размонтировался при выходе из системы, вы можете удалить ~/.ecryptfs/auto-umount, и он перестанет размонтироваться при выходе из системы (что я и делаю, Debian wheezy). Я нашелэта тема на askubuntuпримерно то же самое, однако представленный скрипт не работает. Вот модифицированная версия, которая работает.

#!/bin/bash

if tmux ls 2>&1 >/dev/null; then
  # tmux is still running, do not auto-unmount
  rm $HOME/.ecryptfs/auto-umount
else
  # no tmux server, auto-unmount is OK.
  touch $HOME/.ecryptfs/auto-umount
fi

Как упоминалось в этой теме, вы можете сделать так, чтобы он выполнялся как часть вашего скрипта выхода из системы.

К сожалению, нет хорошего способа разрешить ему отмонтироваться и автоматически присоединить все ваши приложения к cd на tmux. Если это необходимо, вы можете рассмотреть макрос tmux key для выдачи команды каждому окну и панели, если вы храните свои приложения в обычных местах или у вас есть разумный способ точно определить, какое приложение запущено в этом окне или панели; я лично так и не понял этого.

Связанный контент