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.