Установите правильные права для точки монтирования sshfs, чтобы ее можно было использовать совместно с samba

12

У меня есть хостер домена, который обеспечивает доступ через SSH.

Мои платформы:

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

Я работаю на своей Windows, я использую Gentoo, чтобы сделать все то, что Windows не может сделать.

Поэтому я использую sshfs для монтирования удаленного публичного каталога для моего домена в /mnt/mydomain.com. Аутентификация осуществляется с помощью ключей, поэтому ленивый мне не нужно вводить мой пароль время от времени.

Поскольку я пишу код в Windows и не хочу постоянно загружать / скачивать измененные файлы, я хочу получить доступ к этому /mnt/mydomain.com через общий ресурс samba.

Итак, я поделился / mnt в samba, все монтирования, кроме mydomain.com, перечислены в моем проводнике Windows.

Мои теории:

  1. sshfs не устанавливает точку монтирования 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

/ И т.д. / 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
  • / Главная / к / паб / реж /
  • /mnt/mydomain.com/

параметры:

  • комментарий = SSHFS
  • NOAUTO
  • пользователи
  • Exec
  • UID = 0
  • GID = 0
  • allow_other
  • переподключение
  • follow_symlinks
  • transform_symlinks
  • не IDMAP = нет
  • SSHOPT = HostbasedAuthentication

Помогите!

CS01
источник
IIRC, HostbasedAuthenticationне рекомендуется использовать ( PubkeyAuthenticationпредпочтительнее для пользователей)
user1686
SSHFS version 2.8 fuse: unknown option 'SSHOPT=HostBasedAuthentication'
Том Хейл,

Ответы:

11

sshfsявляется файловой системой на основе FUSE, и уровень FUSE не позволяет другим пользователям получать доступ к его монтированию по умолчанию в целях безопасности. У вас есть allow_otherв настройках, но он будет игнорироваться, пока вы не измените, /etc/fuse.confчтобы включить user_allow_other.

user1686
источник
1
При выполнении «ps aux» в левом столбце указывается root для процессов sshfs и smbd. Я "разбираю" это, так как оба запускаются с одинаковыми привилегиями. Из вывода ls -lah вы видите, что uid не является root, этот uid установлен sshfs, но я не могу его установить, по крайней мере, с изменением uid / gid в опциях. Я полагаю, что samba почему-то считает, что он должен исключить этот конкретный каталог с помощью uid / gid 68591. (Пытаюсь устранить некоторую путаницу с моей стороны.)
CS01
@ CS01: «master» smbd запускается как root, но это не так для обработчиков соединений - если вы входите через SMB как «jim», ваш процесс smbd также переключается на UID «jim».
user1686
1
Вам также необходимо сопоставить UID и / или GID с желаемым пользователем (-ями) с помощью параметров uid = <UID>, gid = <GID>.
sweisgerber.dev
Спасибо всем за ответы. Подводя итог, после тестирования на последней версии Ubuntu: 1. update /etc/fuse.conf; 2. укажите ТРИ опции команды sshfs ( -o allow_other -o uid=<UID> -o gid=<GID>). Кажется, нет необходимости перезапускать smbd(но я не уверен, так как я smbdвсе равно перезапустил ).
Миша
2

Почему вы не монтируете sshfs напрямую из Windows?
Есть несколько бесплатных решений для этого (см. Здесь и здесь для получения дополнительной информации).

user629926
источник
1
Вау, этот инструмент великолепен!
CS01
Они выглядят не очень многообещающе и отстранены, по крайней мере сейчас, через 3 года :) У вас есть какой-нибудь опыт стабильности?
sweisgerber.dev
0

Так как ваши обычные smb-ресурсы работают, я не теряю слов о конфигурации Samba, потому что вы можете монтировать shre sshfs точно так же, как вы делитесь обычными папками. Но монтирование общего ресурса SSH через sshfs является особенным по сравнению только с доступом к локальной машине.

Для монтирования вашего общего ресурса через fstab вы можете поместить эту строку в / etc / fstab и смонтировать общий ресурс по запросу. Это удобнее, чем использовать команду командной строки.

Общая строка 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: позволяет обычным пользователям монтировать эту запись монтирования

Переподключение : переподключение / перемонтирование сети после ожидания и т. д.

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]

sweisgerber.dev
источник