La pregunta fue respondida en una lista de correo de Linux; Publico una respuesta traducida aquí para completar.
Solución
La solución es no usar ambas opciones default_permissions
y allow_other
(que no probé en mis experimentos originales).
Explicación
El problema parece ser bastante simple. Cuando le das a la opción default_permissions
en fusermount, el kernel maneja el control de permisos de fuse del fuse mount y no por fusible . Esto significa que el uid/gid de REMOTE_USER no está asignado al LOCAL_USER (sshfs.c IDMAP_NONE). Funciona de la misma manera que un nfs fs simple sin asignación.
Por lo tanto, tiene sentido prohibir el acceso si los números uid/gid no coinciden.
Si tienes la opción allow_other
entonces este directorio solo puede escribirlo el usuario local con uid 699, si existe.
Del hombre de fusibles:
'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.
No ejecute sshfs con sudo. Si lo hace, ssh considerará que el sistema de archivos pertenece a la raíz. Ejecútelo como usted mismo, luego podrá escribir en los archivos.
aclaración
Cuando se ejecuta sin sudo, debe realizar el montaje en su propio directorio, ya que probablemente no pueda escribir en /mnt. Aquí hay un ejemplo de cómo usar sshfs una vez que haya agregado user_allow_other a /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
Una posible razón para esto, una que encontré, fue que no tenía más espacio libre en el disco que monté.