Pertanyaan itu dijawab dalam milis linux; Saya memposting jawaban yang diterjemahkan di sini untuk kelengkapan.
Solusi
Solusinya adalah tidak menggunakan kedua opsi default_permissions
dan allow_other
(yang tidak saya coba dalam percobaan awal saya).
Penjelasan
Masalahnya tampaknya cukup sederhana. Saat Anda memberikan opsi default_permissions
di fusermount maka kontrol izin sekering atas dudukan sekering ditangani oleh kernel dan bukan dengan sekring . Ini berarti bahwa uid/gid REMOTE_USER tidak dipetakan ke LOCAL_USER (sshfs.c IDMAP_NONE). Ini bekerja dengan cara yang sama seperti nfs fs sederhana tanpa pemetaan.
Jadi, masuk akal untuk melarang akses, jika nomor uid/gid tidak cocok.
Jika Anda memiliki opsi allow_other
maka dir ini hanya dapat ditulis oleh pengguna lokal dengan uid 699, jika ada.
Dari orang sekering:
'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.
Jangan jalankan sshfs dengan sudo. Jika Anda melakukannya, ssh akan menganggap bahwa sistem file milik root. Jalankan sebagai diri Anda sendiri, lalu Anda dapat menulis ke file.
klarifikasi
Saat berjalan tanpa sudo, Anda perlu me-mount di direktori Anda sendiri, karena Anda mungkin tidak dapat menulis ke /mnt. Jadi, inilah contoh cara menggunakan sshfs setelah Anda menambahkan user_allow_other ke /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
Satu kemungkinan alasan untuk hal ini -- yang saya temukan -- adalah karena saya tidak memiliki ruang kosong lagi di disk yang saya pasang.