Tetapkan hak yang tepat untuk sshfs mountpoint sehingga dapat dibagikan dengan samba

12

Saya memiliki domain hoster yang menyediakan akses melalui SSH.

Platform saya adalah:

  • Gentoo 2.6.36-r5
  • Windows (XP / Vista / 7)

Saya bekerja di Windows saya, saya menggunakan Gentoo untuk melakukan semua keajaiban yang tidak bisa dilakukan Windows.

Karena itu saya menggunakan sshfs untuk memasang direktori publik jarak jauh untuk domain saya ke /mnt/mydomain.com. Otentikasi dilakukan melalui kunci, jadi saya malas tidak perlu mengetikkan kata sandi saya setiap sekarang dan kemudian.

Karena saya melakukan pengkodean pada Windows, dan saya tidak ingin mengunggah / mengunduh file yang diubah setiap saat, saya ingin mengakses /mnt/mydomain.com ini melalui share samba.

Jadi saya membagikan / mnt dalam samba, semua mount kecuali mydomain.com terdaftar di Windows Explorer saya.

Teori saya adalah:

  1. sshfs tidak mengatur mountpoint uid / gid ke sesuatu yang diharapkan samba
  2. samba tidak tahu bahwa ia harus menyertakan uid / gid yang telah ditetapkan /mnt/mydomain.com .
  3. Semua di atas salah, dan saya tidak tahu.

Berikut adalah konfigurasi dan keluaran dari konsol, perlu yang lain, beri tahu saya. Juga tidak ada kesalahan atau peringatan yang saya perhatikan relevan dengan masalah ini, tetapi saya mungkin salah.

gentoo ~ # ls -lah /mnt
total 20K
drwxr-xr-x  9 root  root  4.0K Mar 26 16:15 .
drwxr-xr-x 18 root  root  4.0K Mar 26  2011 ..
-rw-r--r--  1 root  root     0 Feb  1 16:12 .keep
drwxr-xr-x  1 root  root     0 Mar 18 12:09 buffer
drwxr-s--x  1 68591 68591 4.0K Feb 16 15:43 mydomain.com
drwx------  2 root  root  4.0K Feb  1 16:12 cdrom
drwx------  2 root  root  4.0K Feb  1 16:12 floppy
drwxr-xr-x  1 root  root     0 Sep  1  2009 services
drwxr-xr-x  1 root  root     0 Feb 10 15:08 www

/etc/samba/smb.conf

[mnt]
comment = Mount points
writable = yes
writeable = yes
browseable = yes
browsable = yes
path = /mnt

/ etc / fstab

sshfs#[email protected]:/home/to/pub/dir/ /mnt/mydomain.com/ fuse comment=sshfs,noauto,users,exec,uid=0,gid=0,allow_other,reconnect,follow_symlinks,transform_symlinks,idmap=none,SSHOPT=HostBasedAuthentication 0 0

Untuk lebih mudah dibaca:

pilihan:

  • komentar = sshfs
  • noauto
  • pengguna
  • eksekutif
  • uid = 0
  • gid = 0
  • allow_other
  • terhubung kembali
  • follow_symlinks
  • transform_symlinks
  • idmap = tidak ada
  • SSHOPT = HostBasedAuthentication

Tolong!

CS01
sumber
IIRC, HostbasedAuthenticationtidak disarankan untuk digunakan (berbasis pengguna PubkeyAuthenticationlebih disukai)
user1686
SSHFS version 2.8 fuse: unknown option 'SSHOPT=HostBasedAuthentication'
Tom Hale

Jawaban:

11

sshfsadalah sistem file berbasis FUSE, dan lapisan FUSE tidak mengizinkan pengguna lain untuk mengakses mountnya secara default, untuk tujuan keamanan. Anda memiliki allow_otheropsi, tetapi akan diabaikan sampai Anda juga mengedit /etc/fuse.confuntuk memasukkan user_allow_other.

pengguna1686
sumber
1
Ketika mengeksekusi "ps aux", kolom kiri menyatakan root untuk proses sshfs dan smbd. Saya "parse" karena keduanya berjalan dengan hak yang sama. Dari output ls -lah, Anda melihat uid bukan root, uid ini diatur oleh sshfs, tapi saya tidak bisa mengaturnya, setidaknya tidak dengan mengubah uid / gid di opsi. Saya percaya samba entah bagaimana berpikir itu harus mengecualikan direktori tertentu dengan uid / gid 68591. (Mencoba untuk menghapus beberapa kebingungan di pihak saya.)
CS01
@ CS01: Smbd "master" berjalan sebagai root, tetapi itu tidak benar untuk penangan koneksi - jika Anda masuk ke SMB sebagai "jim", proses smbd Anda juga beralih ke UID "jim".
user1686
1
Anda juga perlu memetakan UID dan / atau GID ke pengguna yang Anda inginkan melalui opsi uid = <UID>, gid = <GID>.
sweisgerber.dev
Terima kasih atas jawabannya. jadi untuk meringkas, setelah diuji pada Ubuntu versi terbaru: 1. perbarui /etc/fuse.conf; 2. tentukan opsi perintah THREE sshfs ( -o allow_other -o uid=<UID> -o gid=<GID>). Tampaknya tidak perlu memulai ulang smbd(tapi saya tidak yakin karena saya smbdtetap restart ).
bruin
2

Mengapa Anda tidak memasang sshfs langsung dari Windows?
Ada beberapa solusi gratis untuk itu (lihat di sini dan di sini untuk info lebih lanjut).

pengguna629926
sumber
1
Wow, alat ini luar biasa!
CS01
Mereka tidak terlihat sangat menjanjikan dan ditangguhkan, setidaknya sekarang, setelah 3 tahun :) Apakah Anda memiliki pengalaman stabilitas dengan mereka?
sweisgerber.dev
0

Saat share smb normal Anda berfungsi, saya tidak kehilangan sepatah kata pun tentang konfigurasi Samba, karena Anda dapat melakukan sshfs mount persis seperti Anda membagikan folder normal. Tetapi pemasangan berbagi SSH melalui sshf adalah istimewa dibandingkan dengan akses mesin lokal saja.

Untuk memasang share Anda melalui fstab, Anda bisa meletakkan baris ini di / etc / fstab dan pasang share ON REQUEST. Ini lebih nyaman daripada c & p perintah commandline.

Generik dll / baris fstab:

**<USERNAME>**@<SERVER>:<REMOTE_PATH> /MOUNT/POINT fuse.sshfs noauto,users,idmap=user,IdentityFile=/path/to/.ssh/id_rsa,allow_other,reconnect,port=22,uid=<UID>,gid=<GID> 0 0

noauto: Anda perlu memasangnya melalui mount /MOUNT/POINT semua informasi lain yang ditarik dari baris ini di / etc / fstab

pengguna: memungkinkan pengguna normal untuk memasang entri pemasangan ini

sambungkan kembali: menghubungkan kembali / mengirim kembali cadangan setelah siaga, dll

uid = / gid =: Memetakan uid / gid jarak jauh ke uid / gid lokal ini

Contoh:

[email protected]:/home/foo/music ~/foos_music fuse.sshfs noauto,users,idmap=user,IdentityFile=/home/foo/.ssh/id_rsa,allow_other,reconnect,port=22,uid=foo,gid=users 0 0

Semua yang perlu Anda ketahui tentang pemasangan sshfs [ https://wiki.archlinux.org/index.php/Sshfs]

sweisgerber.dev
sumber