Perché i miei mount gvfs non vengono visualizzati in ~ / .gvfs o / run / user / <login> / gvfs?


35

Da quello che ho letto, quando si monta una condivisione di rete tramite nautilus o gvfs-mountil mount point dovrebbe essere dentro ~/.gvfs. Questo non sembra essere il mio caso: ho provato a montare una condivisione FTP e SMB sia tramite nautilus gvfs-mountsia con Ubuntu Maverick e Natty e in nessuno dei casi ho visto alcun punto di montaggio sotto ~/.gvfs. Posso accedere alle condivisioni che ho appena trovato in nautilus, ma voglio avere accesso tramite la riga di comando, motivo per cui ho bisogno di un punto di montaggio nel file system.

Modifica: il debug a seguito della risposta di James Henstridge e del commento di enzotib ha rivelato che sul mio laptop gvfs-fuse-daemonè in esecuzione e di conseguenza vengono visualizzati i supporti gvfs ~/.gvfs, mentre sulle 2 workstation in cui è ~/.gvfsrimasto vuoto gvfs-fuse-daemonnon erano in esecuzione. Su tutte le 3 macchine ci sono altri processi in esecuzione gvfs: gvfsd, gvfs-afc-volume-monitor, ...

Sul portatile, mount | fgrep gvfscede

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

Ciò solleva le domande:

  • Come vengono montate le condivisioni senza essere gvfs-fuse-daemoneseguite? Non esiste alcun mount point in quel caso e ogni accesso alla condivisione è chiamato da una libreria gvfs? Quale demone è responsabile? gvfsd?
  • Qual è il ruolo di gvfs-fuse-daemon? Crea solo un punto di innesto fusibile ~/.gvfs?

Aggiornamento: il 12.10 e successivi, i supporti sono sotto /run/user/<login>/gvfs.


2
Puoi mostrare l'output di mount | grep gvfs?
enzotib,

Risposte:


12

La ~/.gvfsdirectory dovrebbe essere un mount FUSE gestito dal gvfs-fuse-daemonprocesso. Se la directory sembra vuota, indicherebbe che gvfs-fuse-daemonnon è stato avviato correttamente.

Puoi provare ad avviarlo manualmente con il seguente comando:

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

Se il problema persiste, puoi provare a verificare se è installato qualcos'altro, oppure eliminare e ricreare prima la directory ~ / .gvfs. Se le cose continuano a fallire, potresti aggiornare la tua domanda e fornire eventuali messaggi di errore stampati da gvfs-fuse-daemon?

** Il 14.04 il demone viene chiamato gvfsd-fusee può essere trovato in /usr/lib/gvfs/gvfsd-fuse.


1
Altre ricerche hanno rivelato che gvfsddovrebbe avviarsi gvfs-fuse-daemonautomaticamente quando gvfsdriceve la prima richiesta di accesso a un file system remoto. C'è anche un bug in Ubuntu / Debian che rende ~/.gvfsilleggibile la directory in caso di gvfs-fuse-daemoncrash e produce il messaggio di errore L' endpoint di trasporto non è collegato .
kynan,

È mai stato risolto perché gvfsdnon si avvia gvfs-fuse-daemonautomaticamente? Sotto RHEL sembra funzionare come previsto per utenti root ma non privilegiati.
Aaron Copley,

Non risponde veramente alla domanda "Qual è il ruolo di gvfs-fuse-daemon" e "Come vengono montate le condivisioni senza gvfs-fuse-daemon in esecuzione?". gvfs-fuse-daemon consente opzioni come allow_root che vengono ignorate di default quando si usa gvfs-mount. Quindi rispondere a queste domande aiuterebbe a risolvere questo eterno mistero qui.
Nuzzolilo,

C'è un altro avvertimento! gvfs-mountrichiede DBUS e otterrai un mountpoint solo quando gvfs-mountusi THE SAME DBUS SESSION come gvfs-fuse-daemon. Pertanto, se stai inserendo un SSH in una macchina e stai accendendo un dbus-daemonper la tua sessione, devi anche generare un individuo gvfs-fuse-daemonper la tua sessione.
user1129682

Bene, sono passati 5 anni e questo sembra essere ancora un problema
Stuart Axon,

20

Risolto il problema (tipo di).

Su Ubuntu 12.10 appare il mountpoint /run/user/(your username)/gvfs/sftp\:host\=\192.168.xxx.xxx.

spero che sia d'aiuto


4

In Ubuntu 12.10 i percorsi sono stati cambiati:

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

3

Su Debian 6.0 wheezy, con lxde e nautilus. Ho trovato vuota anche la directory ~ / .gvfs. Ho provato a correre

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

Ma mi ha detto: / dev / fuse: autorizzazione negata.

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

Ho pensato che forse è perché non sono nel gruppo dei fusibili, quindi ho aggiunto il mio account utente a quel gruppo. Dopo un riavvio, il mount di gvfs mostra correttamente ~ / .gvfs.


3

Ho un problema simile con il mio sistema 12.04 Precise.

Le unità che appaiono montate in Nautilus non vengono visualizzate ~/.gvfs, in particolare dopo un ciclo di sospensione / ripresa. gvfs-fuse-daemonè in esecuzione, ma ucciderlo e riavviare non risolve il problema.

Ho scoperto che riavviare Nautilus dopo nautilus -qcause gvfs-fuse-daemone Nautilus per cooperare di nuovo: ricompaiono i punti di mount.


3

Nelle versioni più recenti di Ubuntu, per impostazione predefinita gvfs è il montaggio in /run/user/$USER/gvfs/.

Puoi verificare tu stesso dove si trova il punto di montaggio predefinito cercando la linea gvfsd-fuse dell'utente /etc/mtab.


2

Ho fatto una domanda correlata per il mio sistema Debian e la risposta è stata:

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

Quindi riavviare. Dopo un mount GVFS (tramite Nautilus), la directory di condivisione si troverà in una delle due posizioni, a seconda della versione di Debian o Ubuntu che hai:

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

Sono abbastanza sicuro che non devi riavviare. A ha systemctl --user restart gvfs-daemonfatto il trucco per me.
Torkel Bjørnson-Langen,

0

Quando desidero accedere direttamente ai file condivisi da un computer Windows (senza sfogliare Nautilus) monto la condivisione su una cartella nella mia directory home.

Per esempio. Se c'è una macchina Windows con l'indirizzo IP 192.168.16.2sul dominio mydomainche ha una cartella condivisa come sharede ho una directory nella mia directory home mnt, posso montare la condivisione mnte accedervi come se fosse nella mia directory home con:

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

dove contiene le credenziali:

username=stacey
password=mypassword
domain=mydomain

Ora posso usare ls /home/stacey/mntper elencare i file e le directory nella directory condivisa sharedsu 192.168.16.2e accedere a qualsiasi file all'interno di questo punto di montaggio come farei un file sul mio disco rigido locale.

Puoi ottenere maggiori informazioni sul montaggio di condivisioni SMB con:

man mount.cifs

Non è quello che l'OP ha chiesto.
enzotib,

2
No, ma Kynan ha detto "ma voglio avere accesso tramite la riga di comando, motivo per cui ho bisogno di un mount point nel file system", quindi sto solo cercando di aiutare.
Stacey Richards,

Grazie. Avrei dovuto menzionare che ho preso in considerazione questa soluzione, ma ha due principali svantaggi che lo rendono impossibile: 1) il file delle credenziali deve contenere la password in testo normale, inaccettabile su una macchina condivisa, 2) richiede i privilegi di root e ho bisogno di una soluzione che
funzioni

0

Per adesso...

#!/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
Una breve spiegazione di questo script sarebbe utile. Quando dovrebbe essere eseguito il cron-job?
mook765,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.