Desmontar pontos de montagem de fusíveis no logout?

1

Eu tenho algumas pastas contendo dados compactados. Eu tenho um aplicativo que precisa acessar a versão não compactada dos mesmos dados.

Uma maneira simples de resolver isso para mim foi executar um script no login com algo parecido com isto:

#!/bin/bash
rar2fs -o allow_other /home/user/source1        /home/user/target1
rar2fs -o allow_other /home/user/source2        /home/user/target2
rar2fs -o allow_other /home/user/source3        /home/user/target3
rar2fs -o allow_other /home/user/source4        /home/user/target4

Para fazer com que o script seja executado quando o login é simples, acabei de adicioná-lo usando 'Startup Applications'.

Acabei de perceber, no entanto, que minha abordagem é curta quando saio e depois volto novamente.

Meu palpite é que funciona mal, já que as montagens rar2fs / fuse acontecem dentro da minha pasta pessoal criptografada. Quando faço logout, acho que o ubuntu bloqueia a criptografia, mas a minha montagem provavelmente permanece, mesmo que a origem e o destino estejam inacessíveis.

Então, quando eu faço login novamente, adicionando insulto à injúria, tento fazer a montagem novamente. Deixando-me com pontos de montagem que geram erros como quando tento acessá-los:

Error: Error when getting information for file '/home/user/target1':Transport endpoint is not connected

Meu palpite é que isso poderia ser evitado se eu conseguisse fazer com que o sistema fosse desmontado corretamente no logout, mas não sei como fazer com que um script seja executado no logout.

Como alguém desliga corretamente uma montagem de fusível antes do logout?

EDIT: estou usando a unidade.

EDITAR:

Em execução fusermount -u usando session-cleanup-script , recebo o seguinte erro:

fusermount: bad mount point /home/user/target1: No such file or directory

Eu também tentei adicionar o umount loop ao meu script de montagem para que ele desmontasse as pastas antes de montá-las se elas já estivessem montadas, mas essas quantidades também falham:

fusermount: failed to unmount /home/user/target1: Invalid argument

Meu palpite é que a primeira solução falha porque a home page criptografada é bloqueada antes da execução do script de limpeza. Talvez haja alguma maneira de conectar-se à rotina de criptografia e fazer com que um script seja executado antes que a pasta inicial seja bloqueada?

Se eu executar o script umount manualmente antes de efetuar o logout dos pontos de montagem, trabalhe como esperado quando fizer o login novamente.

    
por azzid 04.03.2013 / 10:55

1 resposta

2

Eu tenho um problema parecido com o seu, exceto que eu uso o SSHFS. Acho que minha solução pode ser facilmente adaptada para o seu cenário.

Em /etc/lightdm/lightdm.conf , na seção [SeatDefaults] , a seguinte opção aponta para um arquivo que é executado ao sair de uma sessão do usuário (executado como root):

session-cleanup-script=/path/to/file

Uma montagem de fusível pode ser desmontada executando fusermount -u /path/to/mount/point , mas somente o usuário que a montou pode desmontá-la. Então eu tive que usar su para mudar o usuário antes de fusermount -u . Este é o meu script de logout:

#!/bin/bash

# Change user
if [ "$EUID" = "0" -a "$USER" != "root" ]; then
    su -c $0 $USER &
    exit 0
fi

# Unmount sshfs sharings at the end of the session
for MNTPOINT in 'mount -t fuse.sshfs | grep -i "user=$USER" | cut -d" " -f 3'; do
        fusermount -u $MNTPOINT
done

exit 0

Tudo o que você precisa fazer é substituir fuse.sshfs pelo tipo correto de sistema de arquivos, o que você pode descobrir em mount output.

    
por Eric Carvalho 04.03.2013 / 19:31