La question a été répondue dans une liste de diffusion Linux; Je poste une réponse traduite ici pour être complet.
Solution
La solution est de ne pas utiliser les deux options default_permissions
et allow_other
(ce que je n'ai pas essayé dans mes expériences originales).
Explication
Le problème semble assez simple. Lorsque vous donnez l'option default_permissions
dans fusermount, le contrôle des autorisations de fuse sur le montage du fusible est géré par le noyau et non par fusible . Cela signifie que les uid/gid de REMOTE_USER ne sont pas mappés sur LOCAL_USER (sshfs.c IDMAP_NONE). Cela fonctionne de la même manière qu'un simple nfs fs sans mappage.
Il est donc logique d'interdire l'accès si les numéros uid/gid ne correspondent pas.
Si vous avez l'option allow_other
alors ce répertoire est accessible en écriture uniquement par l'utilisateur local avec l'uid 699, s'il existe.
De l'homme du fusible :
'default_permissions'
By default FUSE doesn't check file access permissions, the
filesystem is free to implement its access policy or leave it to
the underlying file access mechanism (e.g. in case of network
filesystems). This option enables permission checking, restricting
access based on file mode. It is usually useful together with the
'allow_other' mount option.
'allow_other'
This option overrides the security measure restricting file access
to the user mounting the filesystem. This option is by default only
allowed to root, but this restriction can be removed with a
(userspace) configuration option.
N'exécutez pas sshfs avec sudo. Si vous faites cela, ssh considérera que le système de fichiers appartient à root. Exécutez-le en tant que vous-même, vous pourrez alors écrire dans les fichiers.
clarification
Lorsque vous exécutez sans sudo, vous devez monter sur votre propre répertoire, car vous ne pouvez probablement pas écrire sur /mnt. Voici donc un exemple d'utilisation de sshfs une fois que vous avez ajouté user_allow_other à /etc/fuse.conf :
$ cd # make sure you are in home directory
$ mkdir mnt # create empty directory
$ sshfs server.com: mnt # mount my home directory on server.com on ./mnt
$ ls mnt
[contents of home directory on server]
$ touch mnt/new_file # no problem creating a new file
$ fusermount -u mnt # unmount file system
$ rmdir mnt
Une des raisons possibles à cela - celle que j'ai trouvée - était que je n'avais plus d'espace libre sur le disque que j'ai monté.