Alla domanda è stata data risposta in una mailing list Linux; Inserisco qui una risposta tradotta per completezza.
Soluzione
La soluzione è non usare entrambe le opzioni default_permissions
e allow_other
(che non ho provato nei miei esperimenti originali).
Spiegazione
Il problema sembra essere abbastanza semplice. Quando dai l'opzione default_permissions
in fusermount il controllo dei permessi di fuse per il fuse mount è gestito dal kernel e non per miccia . Ciò significa che l'uid/gid di REMOTE_USER non è mappato su LOCAL_USER (sshfs.c IDMAP_NONE). Funziona allo stesso modo di un semplice nfs fs senza mappatura.
Quindi, ha senso proibire l'accesso, se i numeri uid/gid non corrispondono.
Se hai l'opzione allow_other
quindi questa directory è scrivibile solo dall'utente locale con uid 699, se esiste.
Dall'uomo di fusibile:
'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.
Non eseguire sshfs con sudo. Se lo fai, ssh considererà che il file system appartiene a root. Eseguilo come te stesso, quindi sarai in grado di scrivere sui file.
chiarimento
Quando si esegue senza sudo, è necessario montare nella propria directory, poiché probabilmente non è possibile scrivere su /mnt. Quindi ecco un esempio di come utilizzare sshfs dopo aver aggiunto 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 possibile ragione per questo -- quella che ho colpito -- era che non avevo più spazio libero sul disco che avevo montato.