Tmux 和 encryptfs 在重新连接时导致“(无法访问)”目录

Tmux 和 encryptfs 在重新连接时导致“(无法访问)”目录

我正在运行带有加密主目录 (encryptfs) 的 Ubuntu 13.04 服务器。我保持一个 tmux 会话打开,其中包含我的开发环境 (vim 等)。断开连接时,我将分离 tmux 会话,然后断开 ssh 连接。稍后,当我重新连接并重新连接 tmux 会话时,我会收到以下错误:

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

这通常意味着 vim(分离时仍然打开)保存到错误的位置,并且实际上不会将文件写入磁盘,而只会写入似乎是临时的“无法访问”的目录。

如果我跑'密码' 从 bash (重新连接后没有做任何其他事情)我得到了正确的目录/家/***/***如果我运行“git status”,我会收到上述消息(没有这样的文件),如果我':密码' 在 vi​​m 中,我得到“(无法访问)/***“。

对此的临时修复是运行'光盘 。' 在运行任何其他命令之前,这允许 git/vim/etc 实际查看目录。这非常不方便,因为我经常在 tmux 中打开许多面板/屏幕,我必须运行 '光盘 。每次我重新连接时,都要在每个程序上单击“确定”。除此之外,我还必须确保在断开连接之前关闭 vim 或其他程序,否则如果我不小心,可能会丢失数据。

我在另一处看到另一个帖子,将此归因于 encryptfs 卸载$HOME退出后,但没有回复。这似乎是一个可能的原因,但我不知道从哪里开始。有什么帮助吗?

答案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

正如该线程中提到的,您可以将其作为注销脚本的一部分执行。

不幸的是,没有一个好的方法可以允许它卸载并让所有应用程序在 tmux 连接时自动 cd。如果需要,您可以考虑使用 tmux 键宏来向每个窗口和面板发出命令,前提是您将应用程序放在常规位置,或者有一种合理的方法来准确检测该窗口或面板中正在运行的应用程序;我个人从来没有弄清楚过。

相关内容