Tmux e encryptfs causando diretórios "(inacessíveis)" na reconexão

Tmux e encryptfs causando diretórios "(inacessíveis)" na reconexão

Estou executando um servidor Ubuntu 13.04 com um diretório inicial criptografado (encryptfs). Eu mantenho uma sessão tmux aberta que contém meu ambiente de desenvolvimento (vim, etc). Quando eu desconectar, desconectarei a sessão tmux e desconectarei a conexão ssh. Mais tarde, quando eu reconectar e reconectar a sessão do tmux, receberei erros como:

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

Isso geralmente significa que o vim (que ainda estava aberto enquanto desanexado) salva no local errado e não grava o arquivo no disco, apenas no diretório "inacessível", o que parece temporário.

Se eu correr 'senha'do bash (sem fazer mais nada desde a recolocação) eu obtenho o diretório apropriado/lar/***/***. Se eu executar 'git status', recebo a mensagem acima (nenhum arquivo), e se eu ':pwd'de dentro do vim, eu recebo "(inacessível)/***".

A solução temporária para isso é executar 'cd .' antes de executar qualquer outro comando, o que permite que git/vim/etc realmente veja o diretório. Isso é bastante inconveniente, pois muitas vezes tenho muitos painéis/telas abertos no tmux e teria que executar 'cd .' em cada um deles sempre que me reconecto. E além disso, eu teria que ter certeza de que o vim ou qualquer outra coisa está fechado antes de desconectar, ou provavelmente perderei dados se não tomar cuidado.

Eu vi outro tópico em algum lugar que atribuiu isso à desmontagem do encryptfs$HOMEapós o logout, mas não houve respostas. Esta parece ser uma causa possível, mas não tenho ideia por onde começar. Qualquer ajuda?

Responder1

Se for suficiente que seu diretório inicial protegido por ecryptfs não seja desmontado quando você sair, você pode remover ~/.ecryptfs/auto-umount e ele irá parar de desmontar quando você sair (que é o que eu faço, debian wheezy). eu encontreieste tópico no askubuntuquase a mesma coisa, porém o script apresentado não funciona. Aqui está uma versão modificada que faz isso.

#!/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

Conforme mencionado nesse tópico, você pode executá-lo como parte do seu script de logout.

Infelizmente, não há uma boa maneira de permitir que ele seja desmontado e que todos os seus aplicativos sejam automaticamente cd no tmux attachment. Se isso for necessário, você pode considerar uma macro de tecla tmux para emitir um comando para cada janela e painel se você mantiver seus aplicativos em locais regulares ou tiver uma maneira sensata de detectar com precisão qual aplicativo está sendo executado naquela janela ou painel; Eu pessoalmente nunca percebi isso.

informação relacionada