Por que minhas montagens gvfs não aparecem em ~ / .gvfs ou / run / user / <login> / gvfs?


35

Pelo que li, ao montar um compartilhamento de rede via nautilus ou gvfs-mounto ponto de montagem deve estar ~/.gvfs. Para mim, esse não parece ser o caso: tentei montar um compartilhamento FTP e SMB via nautilus e gvfs-mountno Ubuntu Maverick e Natty e em nenhum dos casos vi nenhum ponto de montagem ~/.gvfs. Posso acessar os compartilhamentos encontrados no nautilus, mas quero ter acesso pela linha de comando, e é por isso que preciso de um ponto de montagem no sistema de arquivos.

Edit: A depuração após a resposta de James Henstridge e o comentário do enzotib revelou que no meu laptop gvfs-fuse-daemonestá funcionando e, consequentemente, as montagens gvfs aparecem ~/.gvfs, enquanto nas 2 estações de trabalho onde ~/.gvfspermaneciam vazias gvfs-fuse-daemonnão estava em execução. Em todas as 3 máquinas existem outros processos gvfs execução: gvfsd, gvfs-afc-volume-monitor, ...

No laptop, mount | fgrep gvfsgera

gvfs-fuse-daemon on /home/xxx/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=xxx)

Isso levanta as questões:

  • Como os compartilhamentos são montados sem gvfs-fuse-daemonexecução? Não existe um ponto de montagem criado nesse caso e todo acesso ao compartilhamento é chamado por uma biblioteca gvfs? Qual daemon é responsável? gvfsd?
  • Qual é o papel gvfs-fuse-daemon? Ele cria apenas um ponto de montagem de fusível ~/.gvfs?

Atualização: em 12.10 e posterior, as montagens estão abaixo /run/user/<login>/gvfs.


2
Você pode mostrar a saída de mount | grep gvfs?
— enzotib 13/09/11

Respostas:


12

O ~/.gvfsdiretório deve ser uma montagem do FUSE manipulada pelo gvfs-fuse-daemonprocesso. Se o diretório parecer vazio, isso indica quegvfs-fuse-daemon não foi iniciado corretamente.

Você pode tentar iniciá-lo manualmente com o seguinte comando:

/usr/lib/gvfs/gvfs-fuse-daemon ~/.gvfs

Se isso falhar, você pode tentar verificar se alguma outra coisa está montada lá ou até mesmo excluir e recriar o diretório ~ / .gvfs primeiro. Se as coisas ainda falharem, você pode atualizar sua pergunta e fornecer quaisquer mensagens de erro impressas porgvfs-fuse-daemon ?

** No 14.04, o daemon é chamado gvfsd-fusee pode ser encontrado em /usr/lib/gvfs/gvfsd-fuse.


1
Mais pesquisas revelaram que gvfsddeveria iniciar gvfs-fuse-daemonautomaticamente quando gvfsda primeira solicitação de acesso a um sistema de arquivos remoto. Há também um bug no ubuntu / debian que torna o ~/.gvfsdiretório ilegível quando gvfs-fuse-daemonfalha e produz a mensagem de erro O terminal de transporte não está conectado .
— Kynan

Já foi resolvido por gvfsdque não inicia gvfs-fuse-daemonautomaticamente? No RHEL, parece funcionar como esperado para usuários raiz, mas não privilegiados.
— Aaron Copley

Realmente não responde à pergunta "Qual é o papel do gvfs-fuse-daemon" e "Como os compartilhamentos são montados sem o gvfs-fuse-daemon em execução?". O gvfs-fuse-daemon permite opções como allow_root que são ignoradas por padrão ao usar o gvfs-mount. Portanto, responder a essas perguntas ajudaria a resolver esse mistério eterno aqui.
— Nuzzolilo 01/01

Há outra ressalva! gvfs-mountrequer DBUS e você só obterá um ponto de montagem quando gvfs-mountusar a mesma sessão como gvfs-fuse-daemon. Portanto, se você estiver usando SSH em uma máquina e ativando um dbus-daemonpara a sua sessão, também precisará gerar um indivíduo gvfs-fuse-daemonpara a sua sessão.
— User1129682

Bem, são 5 anos depois e isso ainda parece ser um problema
— Stuart Axon

20

Resolvido o problema (mais ou menos).

No Ubuntu 12.10, o ponto de montagem aparece em /run/user/(your username)/gvfs/sftp\:host\=\192.168.xxx.xxx.

espero que ajude


4

No Ubuntu 12.10, os caminhos foram alterados:

$ mount |grep gvfs
gvfsd-fuse on /run/user/pcm/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=pcm)

3

No Debian 6.0, wheezy, com lxde e nautilus. Encontrei o diretório ~ / .gvfs vazio também. Eu tentei correr

/usr/lib/gvfs/gvfs-fuse-daemon ~/.gvfs

Mas ele me disse: / dev / fuse: permissão negada.

$ ll /dev/fuse
crw-rw---T 1 root fuse 10, 229 Dec 21 11:59 /dev/fuse

Eu pensei que talvez seja porque eu não estou no grupo de fusíveis, então adicionei minha conta de usuário a esse grupo. Após uma reinicialização, a montagem gvfs é exibida em ~ / .gvfs corretamente.


3

Eu tenho um problema semelhante com o meu sistema 12.04 Precise.

As unidades que aparecem montadas no Nautilus não aparecem ~/.gvfs, principalmente após um ciclo de suspensão / retomada.gvfs-fuse-daemonestá sendo executado, mas matá-lo e reiniciar não resolve o problema.

Descobri que reiniciar o Nautilus após nautilus -qcausas gvfs-fuse-daemone o Nautilus cooperar novamente - os pontos de montagem reaparecem.


3

Nas versões mais recentes do Ubuntu, o gvfs assume como padrão a instalação /run/user/$USER/gvfs/.

Você pode verificar onde está o ponto de montagem padrão procurando a linha gvfsd-fuse do usuário /etc/mtab.


2

Fiz uma pergunta relacionada ao meu sistema Debian, e a resposta foi:

apt-get install gvfs-fuse
adduser <username> fuse

Então reinicie. Após a montagem do GVFS (via Nautilus), o diretório de compartilhamento estará em um dos dois locais, dependendo da versão do Debian ou Ubuntu que você possui:

/run/user/<username>/gvfs
~/.gvfs

Tenho certeza que você não precisa reiniciar. A systemctl --user restart gvfs-daemonfez o truque para mim.
— Torkel Bjørnson-Langen

0

Quando desejo acessar arquivos compartilhados diretamente de uma máquina Windows (não navegando pelo Nautilus), montei o compartilhamento em uma pasta no meu diretório pessoal.

Por exemplo. Se houver uma máquina Windows com o endereço IP 192.168.16.2no domínio mydomainque tenha uma pasta compartilhada sharede eu possua um diretório no meu diretório pessoal chamado mnt, eu posso montar o compartilhamento mnte acessá-lo como se estivesse dentro do meu diretório pessoal com:

sudo mount -t cifs "//192.168.16.2/shared" /home/stacey/mnt -o credentials=credentials,uid=stacey,gid=stacey

onde credenciais contém:

username=stacey
password=mypassword
domain=mydomain

Agora eu posso usar ls /home/stacey/mntpara listar os arquivos e diretórios no diretório compartilhado sharedno 192.168.16.2e acessar qualquer arquivo dentro deste ponto de montagem como eu faria um arquivo no meu disco rígido local.

Você pode obter mais informações sobre a montagem de compartilhamentos SMB com:

man mount.cifs

Não é o que o OP pediu.
— enzotib 13/09/11

2
Não, mas kynan disse "mas eu quero ter acesso através da linha de comando, e é por isso que preciso de um ponto de montagem no sistema de arquivos", então estou apenas tentando ajudar.
— Stacey Richards

Obrigado. Eu deveria ter mencionado que considerei essa solução, mas ela tem duas desvantagens principais que a tornam inviável: 1) o arquivo de credenciais deve conter a senha em texto sem formatação, o que é inaceitável em uma máquina compartilhada; 2) requer privilégios de root e eu preciso de uma solução que também funciona em máquinas onde eu não tenho sudo
— Kynan

0

Para agora...

#!/bin/bash
# Add to Cron
# */1 * * * * /root/fixGvfs
w | grep -v root | tail -n +3 | awk '{print $1}' > /tmp/fixGvfsUsers
while read usuario
do
  id=$(id -u $usuario)
  if [ ! -f "/tmp/fixGvfs${id}" ]; then
    umount /run/user/${id}/gvfs
    if [ $? -eq 0 ]; then
      su - $usuario -c "/usr/bin/pkill gvfs*"
      touch "/tmp/fixGvfs${id}"
    fi
  fi
done < /tmp/fixGvfsUsers

3
Uma breve explicação sobre o que esse script fará seria bom. Quando o cron-job deve ser executado?
— mook765
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.