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”,我會收到上面的訊息(沒有這樣的檔案),如果我“:密碼' 從 vim 內部,我得到“(無法訪問)/***」。

對此的臨時修復是運行 '光碟 .' 在執行任何其他命令之前,這允許 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

正如該線程中提到的,您可以將其作為註銷腳本的一部分執行。

不幸的是,沒有一個好的方法可以讓它卸載並讓所有應用程式自動 cd 到 tmux Attach 上。如果需要,您可以考慮使用 tmux 鍵巨集向每個視窗和麵板發出命令,前提是您將應用程式保留在常規位置,或者有一種合理的方法來準確檢測該視窗或面板中正在運行的應用程式;我個人從來沒有弄清楚這一點。

相關內容