J'ai installé osxfuse 3.7.1, sshfs 2.10, libérez des librairies 2.9.7 sous High Sierra 10.13.3.
Les choses semblent fonctionner, sauf que si je monte un répertoire distant via fstab, lors du démontage, il reste un point de montage dans un état zombie, et la seule chose que je puisse faire avec ce chemin est de le réutiliser pour un montage sshfs, comme racine. Bien qu'il existe un truc étrange par lequel je peux récupérer le point de montage en transférant le zombiness dans un fichier différent (voir ci-dessous).
Mon /etc/fstab
est:
me@host:/home/me /Users/me/tmp/foo sshfs allow_other 0 0
Cela démontre le problème (ici, je suis en train d'utiliser diskutil umount
mais umount
éjecter dans l'interface graphique du Finder donne le même résultat):
Tout d’abord, avec sshfs directement (pas de problèmes):
$ cd /Users/me/tmp
$ mkdir foo
$ ls -l
drwxr-x--x 2 me staff 64B 13 Feb 20:41 foo
$ sshfs me@host:/home/me foo
$ ls foo/
# OK, contents of the distant directory.
$ diskutil umount foo
Unmount successful for foo
$ ls -l
drwxr-x--x 2 me staff 64B 13 Feb 20:41 foo
# umount really worked.
Deuxièmement, via /etc/fstab
(mène à un fichier zombie):
$ sudo cp /etc/fstab /etc/fstab.backup
$ echo "me@host:/home/me $PWD/foo sshfs allow_other 0 0" | sudo tee /etc/fstab >/dev/null
$ mount $PWD/foo
$ ls foo/
# OK, contents of the distant directory.
$ diskutil umount foo
Unmount successful for foo
Cependant, en réalité, c’est maintenant foo
" zombie ":
$ ls -l
dr-xr-xr-x 2 root wheel 1B 13 Feb 21:04 foo
# (Ownership/timestamp have changed.)
$ sudo chown me:staff foo
chown: foo: No such file or directory
$ sudo ls foo
ls: foo: No such file or directory
$ sudo rm foo
rm: bar: is a directory
$ sudo rmdir foo
rmdir: foo: Resource busy
$ ls /Volumes
Macintosh HD
$ sudo lsof foo
# Nothing.
À ce stade, le point de montage foo
est devenu un fichier zombie et je ne peux presque pas interagir avec lui. Même si je redémarre, le fichier est toujours dans son état problématique.
La seule chose que je peux faire est de le remonter en tant que root:
$ mount $PWD/foo
mount_osxfuse: failed to mount /Users/me/tmp/foo@/dev/osxfuse0: Operation not permitted
$ sudo mount $PWD/foo
$ ls foo/
# OK, contents of the distant directory.
$ sudo diskutil umount foo
# (Back to the same zombie state.)
Et je peux transférer le zombiness dans un répertoire différent:
$ mkdir bar
$ ls -l
drwxr-x--x 2 me staff 64B 13 Feb 21:16 bar
dr-xr-xr-x 2 root wheel 1B 13 Feb 21:12 foo
$ echo "me@host:/home/me $PWD/bar sshfs allow_other 0 0" | sudo tee /etc/fstab >/dev/null
$ mount $PWD/bar
$ ls bar/
# OK, contents of the distant directory.
$ ls -l -d foo
dr-xr-xr-x 2 root wheel 1B 13 Feb 21:12 foo
$ diskutil umount bar
$ ls -l
dr-xr-xr-x 2 root wheel 1B 13 Feb 21:19 bar
drwxr-x--x 2 me staff 64B 13 Feb 20:41 foo
# After umounting bar:
# foo’s ownerships is me:staff again, bar is zombie.
Des idées? Est-ce que je fais quelque chose de mal?
foo
est un "zombie", quelle est la sortie, le cas échéant, desudo lsof foo
? Y a-t- il des processus ssh à l'hôte distant en cours d' exécution (ps -ef|grep "me@host"
Il y a un format d'entrée fstab alternative que vous pouvez essayer:sshfs#me@host:/home/me /Users/me/tmp/foo fuse allow_other 0 0
./etc/fstab/
vous changez de version, la commande de montage échouera car elle/Library/Filesystems/fuse.fs/
n’existe pas. Utiliserosxfuse
au lieu defuse
in/etc/fstab
provoque l' utilisation de la commande mount/Library/Filesystems/osxfuse.fs/Contents/Resources/mount_osxfuse
qui se plaint que "Ce programme n'est pas destiné à être appelé directement. La bibliothèque OSXFUSE l'appelle".