Đặt quyền thích hợp cho điểm gắn kết sshfs để có thể chia sẻ với samba


12

Tôi có một tên miền hoster cung cấp quyền truy cập thông qua SSH.

Nền tảng của tôi là:

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

Tôi làm việc trên Windows của mình, tôi sử dụng Gentoo để làm tất cả những điều kỳ diệu mà Windows không thể làm được.

Do đó, tôi sử dụng sshfs để gắn thư mục công cộng từ xa cho tên miền của tôi vào /mnt/mydomain.com. Việc xác thực được thực hiện thông qua các khóa, vì vậy tôi không cần phải nhập mật khẩu mỗi lần.

Vì tôi thực hiện mã hóa trên Windows và tôi không muốn tải lên / tải xuống các tệp đã thay đổi mọi lúc, tôi muốn truy cập /mnt/mydomain.com này thông qua chia sẻ samba.

Vì vậy, tôi đã chia sẻ / mnt trong samba, tất cả các mount ngoại trừ mydomain.com được liệt kê trên Windows Explorer của tôi.

Lý thuyết của tôi là:

  1. sshfs không đặt uid / gid mountpoint thành thứ gì đó mà samba mong đợi
  2. samba không biết rằng nó phải bao gồm uid / gid mà /mnt/mydomain.com đã được đặt.
  3. Tất cả ở trên là sai, và tôi không biết.

Dưới đây là cấu hình và đầu ra từ bàn điều khiển, cần bất cứ điều gì khác chỉ cho tôi biết. Ngoài ra không có lỗi hoặc cảnh báo mà tôi nhận thấy có liên quan đến vấn đề này, nhưng tôi có thể sai.

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

Để dễ đọc hơn:

  • myusername@mywebhotel.com
  • / nhà / đến / quán rượu / dir /
  • /mnt/mydomain.com/

tùy chọn:

  • bình luận = sshfs
  • noauto
  • người dùng
  • thực hiện
  • uid = 0
  • gid = 0
  • cho phép
  • kết nối lại
  • theo dõi liên kết
  • biến đổi liên kết
  • idmap = không
  • SSHOPT = HostBasingAuthentication

Cứu giúp!


IIRC, HostbasedAuthenticationkhông được khuyến nghị sử dụng ( PubkeyAuthenticationưu tiên dựa trên người dùng )
user1686

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

Câu trả lời:


11

sshfslà một hệ thống tập tin dựa trên FUSE và lớp FUSE không cho phép người dùng khác truy cập vào các mount của nó theo mặc định, cho mục đích bảo mật. Bạn có allow_othercác tùy chọn, nhưng nó sẽ bị bỏ qua cho đến khi bạn cũng chỉnh sửa /etc/fuse.confđể đưa vào user_allow_other.


1
Khi thực hiện "ps aux", cột bên trái sẽ xác định gốc cho cả hai quá trình sshfs và smbd. Tôi "phân tích" điều này vì cả hai đều chạy với cùng một đặc quyền. Từ đầu ra ls-nhớ, bạn thấy uid không phải là root, uid này được đặt bởi sshfs, nhưng tôi không thể đặt nó, ít nhất là không thay đổi uid / gid trong các tùy chọn. Tôi tin rằng samba bằng cách nào đó nghĩ rằng nó phải loại trừ thư mục cụ thể đó với uid / gid 68591. (Cố gắng xóa một số nhầm lẫn về phía tôi.)
CS01

@ CS01: Smbd "chính" chạy dưới quyền root, nhưng điều đó không đúng với trình xử lý kết nối - nếu bạn đăng nhập qua SMB là "jim", quy trình smbd của bạn cũng chuyển sang UID của "jim".
dùng1686

1
Bạn cũng cần ánh xạ UID và / hoặc GID đến (các) người dùng mong muốn của bạn thông qua các tùy chọn uid = <UID>, gid = <GID>.
sweisgerber.dev

Cảm ơn tất cả các câu trả lời. để tóm tắt, sau khi thử nghiệm trên một phiên bản Ubuntu gần đây: 1. update /etc/fuse.conf; 2. chỉ định BA tùy chọn lệnh sshfs ( -o allow_other -o uid=<UID> -o gid=<GID>). Có vẻ như không cần phải khởi động lại smbd(nhưng tôi không chắc vì smbddù sao tôi cũng đã khởi động lại ).
Bruin

2

Tại sao bạn không gắn sshfs trực tiếp từ Windows?
Có một vài giải pháp miễn phí cho điều đó (xem tại đâyđây để biết thêm).


1
Wow, công cụ này là tuyệt vời!
CS01

Chúng trông không có triển vọng và bị đình chỉ, ít nhất là bây giờ, sau 3 năm :) Bạn có kinh nghiệm ổn định nào với chúng không?
sweisgerber.dev

0

Khi các chia sẻ smb bình thường của bạn đang hoạt động, tôi không mất một từ nào về cấu hình Samba, bởi vì bạn có thể sahre sshfs gắn kết chính xác như bạn chia sẻ các thư mục bình thường. Nhưng việc gắn chia sẻ SSH qua sshfs chỉ đặc biệt so với truy cập máy cục bộ.

Để gắn chia sẻ của bạn qua fstab, bạn có thể đặt dòng này vào / etc / fstab và gắn chia sẻ TRÊN YÊU CẦU. Nó thuận tiện hơn c & p lệnh dòng lệnh.

Dòng vv / fstab chung:

**<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: bạn cần gắn kết nó thông qua mount /MOUNT/POINT tất cả các thông tin khác được lấy từ dòng này trong / etc / fstab

người dùng: cho phép người dùng bình thường gắn kết mục nhập này

kết nối lại: kết nối lại / kết nối lại ahre sau khi chờ, v.v.

uid = / gid =: Ánh xạ uid / gid từ xa tới uid / gid cục bộ này

Thí dụ:

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

Tất cả những gì bạn cần biết về việc gắn sshfs [ https://wiki.archlinux.org/index.php/Sshfs]

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.