ตั้งค่าสิทธิ์ที่เหมาะสมสำหรับ sshfs mountpoint เพื่อให้สามารถแชร์กับ samba ได้


12

ฉันมีโดเมนที่ให้การเข้าถึงผ่าน SSH

แพลตฟอร์มของฉันคือ:

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

ฉันทำงานบน Windows ของฉันฉันใช้ Gentoo ทำทุกอย่างที่ Windows ทำไม่ได้

ดังนั้นฉันใช้ sshfs เพื่อติดตั้งไดเรกทอรีสาธารณะระยะไกลสำหรับโดเมนของฉันไปที่ /mnt/mydomain.com การตรวจสอบความถูกต้องจะทำผ่านทางปุ่มดังนั้นจึงไม่ต้องพิมพ์รหัสผ่านของฉันอีกต่อไป

เนื่องจากฉันเขียนโค้ดบน Windows และฉันไม่ต้องการอัปโหลด / ดาวน์โหลดไฟล์ที่เปลี่ยนแปลงตลอดเวลาฉันต้องการเข้าถึง /mnt/mydomain.com ผ่าน samba share

ดังนั้นฉันจึงแชร์ / mnt ใน samba ทุกการเมานต์ยกเว้น mydomain.com จะปรากฏใน Windows Explorer ของฉัน

ทฤษฎีของฉันคือ:

  1. sshfsไม่ได้ตั้งค่า mountpoint uid / gid เป็นสิ่งที่sambaคาดหวัง
  2. sambaไม่ทราบว่าจะต้องรวม uid / gid ที่/mnt/mydomain.comได้รับการตั้งค่าแล้ว
  3. ทั้งหมดข้างต้นผิดและฉันไม่รู้

นี่คือการกำหนดค่าและเอาท์พุทจากคอนโซลต้องการอะไรก็ได้เพียงแจ้งให้เราทราบ ยังไม่มีข้อผิดพลาดหรือคำเตือนที่ฉันสังเกตเห็นว่าเกี่ยวข้องกับปัญหานี้ แต่ฉันอาจผิด

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#myusername@mywebhotel.com:/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

เพื่อให้อ่านง่ายขึ้น:

  • myusername@mywebhotel.com
  • / home / เพื่อ / ผับ / dir /
  • /mnt/mydomain.com/

ตัวเลือก:

  • ความคิดเห็น = sshfs
  • noauto
  • ผู้ใช้
  • exec
  • uid = 0
  • GID = 0
  • allow_other
  • เชื่อมต่อ
  • follow_symlinks
  • transform_symlinks
  • idmap = ไม่มี
  • SSHOPT = HostbasedAuthentication

ช่วยด้วย!


IIRC HostbasedAuthenticationไม่แนะนำให้ใช้ (แนะนำให้ใช้กับผู้ใช้PubkeyAuthentication)
1686

SSHFS version 2.8 fuse: unknown option 'SSHOPT=HostBasedAuthentication'
Tom Hale

คำตอบ:


11

sshfsเป็นระบบไฟล์แบบ FUSE และเลเยอร์ FUSE ไม่อนุญาตให้ผู้ใช้รายอื่นเข้าถึงการเมานท์ตามค่าเริ่มต้นเพื่อความปลอดภัย คุณมีallow_otherตัวเลือก แต่มันจะถูกละเว้นจนกว่าคุณจะยังแก้ไขจะรวมถึง/etc/fuse.confuser_allow_other


1
เมื่อเรียกใช้งาน "ps aux" คอลัมน์ด้านซ้ายจะระบุรูตสำหรับกระบวนการ sshfs และ smbd ฉัน "แยกวิเคราะห์" สิ่งนี้ขณะที่ทั้งสองทำงานด้วยสิทธิพิเศษเดียวกัน จากเอาต์พุต ls -lah คุณจะเห็นว่า uid ไม่ใช่รูท uid นี้ถูกตั้งค่าโดย sshfs แต่ฉันไม่สามารถตั้งค่าได้อย่างน้อยไม่ได้มีการเปลี่ยน uid / gid ในตัวเลือก ฉันเชื่อว่าแซมบ้าคิดว่ามันต้องแยกไดเรกทอรีเฉพาะนั้นด้วย uid / gid 68591 (พยายามที่จะเคลียร์ความสับสนในส่วนของฉัน)
CS01

@ CS01: smbd "master" ทำงานเหมือนรูท แต่นั่นไม่เป็นความจริงสำหรับตัวจัดการการเชื่อมต่อ - หากคุณล็อกอินผ่าน SMB ในฐานะ "jim" กระบวนการ smbd ของคุณจะเปลี่ยนไปใช้ UID ของ "jim"
1686

1
คุณต้องแมป UID และ / หรือ GID กับผู้ใช้ที่คุณต้องการผ่านตัวเลือก uid = <UID>, gid = <GID>
sweisgerber.dev

ขอบคุณทุกคำตอบ เพื่อสรุปหลังจากทดสอบกับ Ubuntu เวอร์ชันล่าสุด: 1. อัพเดต /etc/fuse.conf; 2. ระบุตัวเลือกคำสั่ง THREE sshfs ( -o allow_other -o uid=<UID> -o gid=<GID>) ดูเหมือนว่าไม่จำเป็นต้องเริ่มต้นใหม่smbd(แต่ฉันไม่แน่ใจตั้งแต่ฉันเริ่มต้นใหม่smbdแล้ว)
ทำลาย

2

ทำไมคุณไม่เมา sshfs โดยตรงจาก Windows
มีวิธีแก้ปัญหาฟรีสองสามข้อสำหรับข้อมูลเพิ่มเติม(ดูที่นี่และที่นี่ )


1
ว้าวเครื่องมือนี้ดีมาก!
CS01

อย่างน้อยตอนนี้หลังจาก 3 ปี :) คุณมีประสบการณ์ความมั่นคงกับพวกเขาหรือไม่?
sweisgerber.dev

0

ในขณะที่การแบ่งปัน smb ปกติของคุณทำงานฉันไม่หลวมคำเกี่ยวกับการตั้งค่า Samba เพราะคุณสามารถติดตั้ง sshre sshfs เหมือนกับที่คุณแชร์โฟลเดอร์ปกติ แต่การติดตั้งการแบ่งปัน SSH ผ่าน sshfs เป็นสิ่งพิเศษเมื่อเปรียบเทียบกับการเข้าถึงเครื่องท้องถิ่นเท่านั้น

สำหรับการติดตั้งการแชร์ของคุณผ่าน fstab คุณสามารถใส่บรรทัดนี้ลงใน / etc / fstab และติดตั้งการแชร์ตามคำขอ สะดวกกว่า c & p คำสั่ง commandline

สาย etc / 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:คุณต้องติดมันผ่านmount /MOUNT/POINT ข้อมูลอื่น ๆ ทั้งหมดจะถูกดึงออกจากบรรทัดนี้ใน / etc / fstab

users: อนุญาตให้ผู้ใช้ปกติเมานท์ mount mount นี้

เชื่อมต่อใหม่:เชื่อมต่ออีกครั้ง / นับใหม่ ahre หลังจากสแตนด์บาย ฯลฯ

uid = / gid =:แมป uid ระยะไกล / gid กับ uid / gid ในพื้นที่นี้

ตัวอย่าง:

foo@example.org:/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

สิ่งที่คุณต้องรู้เกี่ยวกับการติดตั้ง sshfs [ https://wiki.archlinux.org/index.php/Sshfs]

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.