Pourquoi mes montages gvfs n'apparaissent-ils pas sous ~ / .gvfs ou / run / user / <login> / gvfs?

35

D'après ce que je lis, lors du montage d' un partage réseau via nautilus ou gvfs-mountle point de montage doit être ~/.gvfs. Cela ne semble pas être le cas pour moi: j'ai essayé de monter à la fois des partages FTP et SMB via Nautilus et gvfs-mountsous Ubuntu Maverick et Natty et, dans aucun des cas, je n'ai vu de point de montage dessous ~/.gvfs. Je peux accéder aux partages trouvés dans Nautilus, mais je souhaite pouvoir y accéder via la ligne de commande. C'est pourquoi j'ai besoin d'un point de montage dans le système de fichiers.

Edit: Le débogage suivant la réponse de James Henstridge et le commentaire de enzotib ont révélé que mon ordinateur portable gvfs-fuse-daemonest en marche et que des montages gvfs apparaissent ~/.gvfsalors que sur les 2 postes de travail ~/.gvfsrestés vides gvfs-fuse-daemon. Sur les 3 machines il y a d' autres processus de gvfs en cours d' exécution: gvfsd, gvfs-afc-volume-monitor, ...

Sur le portable, des mount | fgrep gvfsrendements

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

Cela soulève des questions:

  • Comment les partages sont montés sans gvfs-fuse-daemoncourir? N'y a-t-il pas de point de montage créé dans ce cas et chaque accès au partage est-il un appel de bibliothèque gvfs? Quel démon est responsable? gvfsd?
  • Quel est le rôle de gvfs-fuse-daemon? Crée-t-il uniquement un point de montage de fusible ~/.gvfs?

Mise à jour: Les versions 12.10 et supérieures sont sous /run/user/<login>/gvfs.

Kynan
la source
2
Pouvez-vous montrer la sortie de mount | grep gvfs?
enzotib

Réponses:

12

Le ~/.gvfsrépertoire doit être un montage FUSE géré par le gvfs-fuse-daemonprocessus. Si le répertoire semble être vide, cela indiquerait qu'il gvfs-fuse-daemonn'a pas démarré correctement.

Vous pouvez essayer de le démarrer manuellement avec la commande suivante:

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

Si cela échoue, vous pouvez essayer de vérifier si quelque chose d'autre est monté à cet endroit, ou même supprimer et recréer le répertoire ~ / .gvfs en premier. Si les choses échouent toujours, pourriez-vous mettre à jour votre question et fournir des messages d'erreur imprimés par gvfs-fuse-daemon?

** Le 14.04, le démon est appelé gvfsd-fuseet se trouve dans /usr/lib/gvfs/gvfsd-fuse.

James Henstridge
la source
1
Certaines recherches supplémentaires ont révélé que la première demande d'accès à un système de fichiers distant gvfsdest censée démarrer gvfs-fuse-daemonautomatiquement gvfsd. Il existe également un bogue dans ubuntu / debian qui rend le ~/.gvfsrépertoire illisible en cas de gvfs-fuse-daemoncrash et génère le message d'erreur Le point de terminaison du transport n'est pas connecté .
Kynan
At-il déjà résolu pourquoi gvfsdne démarre pas gvfs-fuse-daemonautomatiquement? Sous RHEL, cela semble fonctionner comme prévu pour les utilisateurs root mais pas pour les utilisateurs non privilégiés.
Aaron Copley
Ne répond pas vraiment à la question "Quel est le rôle du gvfs-fuse-daemon" et "Comment les partages sont-ils montés sans que le démon gvfs-fuse-daemon ne s'exécute?". gvfs-fuse-daemon autorise des options telles que allow_root qui sont ignorées par défaut lors de l'utilisation de gvfs-mount. Donc, répondre à ces questions aiderait un peu à résoudre ce mystère éternel.
Nuzzolilo
Il y a une autre mise en garde! gvfs-mountexige DBUS et vous n'obtiendrez un point de montage quand gvfs-mountutilise la même session dbus que gvfs-fuse-daemon. Par conséquent, si vous êtes connecté à une machine et que vous lancez une dbus-daemonsession, vous devez également générer un individu gvfs-fuse-daemonpour votre session.
user1129682
Eh bien, c'est 5 ans plus tard et cela semble toujours être un issuel
Stuart Axon
20

Résolu le problème (en quelque sorte).

Sur Ubuntu 12.10, le point de montage apparaît dans /run/user/(your username)/gvfs/sftp\:host\=\192.168.xxx.xxx.

J'espère que ça t'as aidé

Ivan Maglica
la source
4

Dans Ubuntu 12.10, les chemins ont été modifiés:

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

Sur Debian 6.0 wheezy, avec lxde et nautilus. J'ai trouvé le répertoire ~ / .gvfs également vide. J'ai essayé de courir

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

Mais il m'a dit: / dev / fuse: Permission Denied.

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

Je pensais que c'était peut-être parce que je ne faisais pas partie du groupe de fusibles, puis j'ai ajouté mon compte d'utilisateur à ce groupe. Après un redémarrage, le montage gvfs s'affiche correctement dans ~ / .gvfs.

z7z8e
la source
3

J'ai un problème similaire avec mon système 12.04 Precise.

Les lecteurs apparaissant montés dans Nautilus n'apparaissent pas ~/.gvfs, en particulier après un cycle de suspension / reprise. gvfs-fuse-daemonest en cours d'exécution, mais le tuer et le redémarrer ne résolvent pas le problème.

J'ai constaté que le redémarrage de Nautilus après nautilus -qune nouvelle gvfs-fuse-daemontentative et la coopération de Nautilus - les points de montage réapparaissent.

Chris
la source
3

Dans les versions plus récentes d’Ubuntu, gvfs est monté par défaut /run/user/$USER/gvfs/.

Vous pouvez vérifier vous-même où se trouve le point de montage par défaut en recherchant la ligne gvfsd-fuse de votre utilisateur /etc/mtab.

David L
la source
2

J'ai posé une question connexe à mon système Debian et la réponse a été:

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

Puis redémarrez. Après un montage GVFS (via Nautilus), le répertoire de partage se trouvera à l’un des deux emplacements, selon la version de Debian ou Ubuntu dont vous disposez:

/run/user/<username>/gvfs
~/.gvfs
Mike T
la source
Je suis sûr que vous n'avez pas à redémarrer. A systemctl --user restart gvfs-daemonfait le tour pour moi.
Torkel Bjørnson-Langen
0

Lorsque je veux accéder directement aux fichiers partagés à partir d'une machine Windows (sans naviguer dans Nautilus), je monte le partage sur un dossier de mon répertoire personnel.

Par exemple. Là, s'il y a une machine Windows avec l'adresse IP 192.168.16.2sur le domaine mydomainqui a un dossier partagé en tant que sharedet j'ai un répertoire dans mon répertoire personnel appelé mnt, je peux monter le partage mntet y accéder comme s'il se trouvait dans mon répertoire personnel avec:

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

où les informations d'identification contiennent:

username=stacey
password=mypassword
domain=mydomain

Maintenant , je peux utiliser ls /home/stacey/mntpour lister les fichiers et répertoires dans le répertoire partagé sharedsur 192.168.16.2et accéder à tout fichier dans ce point de montage comme je le ferais un fichier sur mon disque dur local.

Vous pouvez obtenir plus d'informations sur le montage de partages SMB avec:

man mount.cifs
Stacey Richards
la source
Pas ce que le PO a demandé.
enzotib
2
Non, mais kynan a déclaré "mais je veux avoir un accès via la ligne de commande, c'est pourquoi j'ai besoin d'un point de montage dans le système de fichiers", alors j'essaie simplement de vous aider.
Stacey Richards le
Merci. J'aurais dû mentionner que j'ai envisagé cette solution, mais elle a deux inconvénients majeurs qui la rendent infaisable: 1) le fichier d'informations d'identification doit contenir le mot de passe en texte brut, ce qui est inacceptable sur une machine partagée, 2) il nécessite des privilèges root et j'ai besoin d'une solution qui fonctionne aussi sur les machines où je n'ai pas de sudo
kynan
0

Pour l'instant...

#!/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
Daniel Del Pino
la source
3
Une brève explication de ce que ce script va faire serait bien. Quand la tâche cron devrait-elle s'exécuter?
mook765