Как мне смонтировать общий ресурс Samba от имени пользователя без полномочий root

Существует ли пошаговое руководство, в котором подробно объясняется, как подключить общий ресурс Samba для использования пользователем без полномочий root на рабочем столе Ubuntu 10.04?

Примечание: в поиске Google есть множество тем, посвященных этой, казалось бы, новой проблеме. Инструкции, которые раньше работали в Ubuntu 8.04 (или более старой версии smbf s), больше не работают.

Мне нужно найти что-то современное и воспроизводимое.

6 ответов

Решение

SMBNetFS - очень хороший инструмент для простого монтирования общих папок samba в домашнюю папку. С помощью этого инструмента вы можете получить доступ к общим ресурсам samba практически всеми приложениями просто через точку монтирования в вашем доме.

Как использовать SMBnetFS:

  • Установите пакет через менеджер пакетов
  • cp /etc/smbnetfs.conf ~/.smb/smbnetfs.conf скопировать стандартную конфигурацию
  • cp /etc/samba/smb.conf ~/.smb/smb.conf скопировать конфигурацию самбы
  • mkdir ~/sambashare или любое другое имя для точки монтирования
  • smbnetfs ~/sambashare смонтировать общие ресурсы к точке монтирования

К сожалению, доступно очень мало документации. Увидеть man smbnetfs для вариантов и перейдите через файл часто задаваемых вопросов в /usr/share/doc/smbnetfs,

Используя gnome, вы можете просто ввести smb:// url в Nautilus. Обычно необходимо установить gvfs-fuse и другие пакеты gvfs, чтобы вы могли монтировать samba напрямую с помощью файлового браузера. Кроме того, вы должны найти все смонтированные файлы в папке ~/.gvfs. Это даже работает с другими протоколами и сжатыми файлами и т. Д.

gvfs-mount smb://user@server/storage

Я протестировал его с помощью Eclipse и других инструментов, и он работает. gvfs-fuse должен быть установлен.

В 2022 году

Если вам нужно смонтировать удаленный общий ресурс smb локально, вы можете использовать набор инструментов. Это неудобно, если вы хотите просмотреть удаленный общий ресурс в файловом менеджере, но очень полезно при написании сценариев.

      gio mount --anonymous "smb://servername/share"
gio copy --progress "smb://servername/share/filename.ext" /local/folder/
gio mount --unmount "smb://servername/share"

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

В Убунту 22.04 устанавливается по умолчанию.

man mount поможет вам определить, какие варианты вы хотите. Если система Windows будет всегда доступна. Вы можете просто добавить гору к /etc/fstab и он будет установлен. Вы можете разрешить пользователю монтировать и размонтировать раздел, как требуется, используя параметры user,noauto, Чтобы позволить другим отключить его изменения user в users,

Autofs также поддерживает монтирование по требованию с использованием samba. Заклинание зависит от того, какие каталоги вы хотите смонтировать когда. Я успешно запустил его в среде разработки.

РЕДАКТИРОВАТЬ: Если вам нужно сделать это для большого количества пользователей, я предлагаю использовать autofs для монтажа. Это не требует изменений в fstab. Получение учетных данных для различных пользователей может быть проблемой. Я использую структуру каталогов в форме /net/$HOST/$USER для моих лошадей. Autofs настроен для /net/$HOST часть монтирования и автоматически монтирует каталоги под ним по мере необходимости.

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

Для большой организации с большим количеством пользователей может иметь смысл переместить каталоги на сервер Linux и использовать Samba для обмена файлами с пользователями Windows. Я не пробовал обратное, но это возможно.

Я нашел этот вопрос, исследуя магию, которую я недавно совершил, чтобы сделать именно это для одного из моих пользователей. Мой рабочий процесс заметно отличается от других ответов. Обратите внимание, однако, что это самый простой случай.

Предполагая, что ваше имя пользователя ae и твой дом /home/ae

1) Настройте smbfs:
mkdir /home/ae/.smb

1a) Если необходимы учетные данные для входа в Windows, создайте и отредактируйте файл: /home/ae/.smb/smbnetfs.conf иметь содержимое:

auth winuser "winpassword"

winuser пользователь, созданный на компьютере Windows, к которому вы хотите получить доступ. winpassword пароль этого пользователя для входа в Windows на этом компьютере.

2) Создайте точку монтирования:
mkdir /home/ae/nethood

3) Выполните команду smbnetfs:
smbnetfs /home/ae/nethood


Обратите внимание, что вся "сетевая окрестность" будет отображаться под /home/ae/nethood с рабочими группами, являющимися первым слоем подкаталогов.

Все перечисленные ниже списки были скопированы из моего просмотра папок в качестве непривилегированного пользователя на хосте Ubuntu. Имя пользователя и группа изменены на ae, sudo никогда не использовался. Компьютеры Windows находятся в неформальной сети Windows, а общие папки защищены пользователем / паролем (на компьютере Windows, используя имя пользователя и пароль Windows).

$ cd nethood
$ ls -alh
total 12K
drwxrwxrwx 9 ae   ae     0 Dec 31  1969 .
drwxr-xr-x 9 ae   ae    21 Jul 28 11:49 ..
drwxrwxrwx 2 root root   0 Dec 31  1969 WORKGROUP

Просмотр рабочей группы WORKGROUP:

$ cd WORKGROUP
$ ls -alh
total 0
drwxrwxrwx 2 root root  0 Dec 31  1969 .
drwxrwxrwx 9 root root  0 Dec 31  1969 ..
lrwxrwxrwx 1 root root 11 Dec 31  1969 HTPC -> ../HTPC
lrwxrwxrwx 1 root root 14 Dec 31  1969 NEWPC -> ../NEWPC

Измените каталог на компьютеры, и все общие папки будут перечислены и доступны как обычно.

$ cd NEWPC
$ ls -alh
total 0
drwxrwxrwx 2 root root 0 Dec 31  1969 .
drwxrwxrwx 9 root root 0 Dec 31  1969 ..
drwxrwxrwx 2 root root 0 Dec 31  1969 Desktop
drwxrwxrwx 2 root root 0 Dec 31  1969 Users

И файлы:

$ cd Desktop/
$ ls -alh
ls: cannot access desktop.ini: No such file or directory
total 30M
drwxrwxrwx 2 root root     0 Dec 31  1969 .
drwxrwxrwx 2 root root     0 Dec 31  1969 ..
-rwxr--r-- 1 ae   ae    1.5K Jan 25  2013 Command Prompt.lnk
-????????? ? ?    ?        ?            ? desktop.ini
-rwxr--r-- 1 ae   ae    156K May 28  2013 Download %25285%2529.iif
-rwxr--r-- 1 ae   ae    2.4K Jul 24 12:28 Google Chrome.lnk
-rwxr--r-- 1 ae   ae     178 Feb  4  2013 import orders.bat
-rwxr--r-- 1 ae   ae    2.3M Mar 30  2012 msvc2008_x86_vcredist_x64.exe
drwxr-xr-x 2 ae   ae       0 May 20  2014 OpenOffice 4.1.0 (en-US) Installation Files
-rwxr--r-- 1 ae   ae    406K Jun  6  2013 Paypal_Jan_1_2012_to_Dec_31_2012.iif
-rwxr--r-- 1 ae   ae     15M May  8  2012 php-5.4.3-Win32-VC9-x86.zip
-rwxr--r-- 1 ae   ae    1.9K Jul 24 13:03 PSPad.lnk
-rwxr--r-- 1 ae   ae    1.1K Jul 24 12:31 VB Demo.lnk

Обратите внимание, что вышеуказанные каталоги имеют право собственности root root, Владение файлом будет таким же, как и у вашего пользователя.

Другие пользователи не смогут получить доступ к папкам независимо от точки монтирования, владельца или прав доступа к этой папке. Если ваш пользователь может "записать" в эту папку (и она пуста), smbnetfs установит там сетевое окружение и не позволит никому другому доступ, даже root, За root чтобы иметь доступ, вы должны su ae,


Если нет общих папок, каталог компьютера будет пустым.

Если у вас нет учетных данных для компьютера Windows, вы можете получить сообщение об ошибке:
ls: cannot open directory .: Input/output error

В Ubuntu я использовал пакет cifs-utils в соответствии с этой статьей: Как смонтировать общий ресурс Samba в Ubuntu Linux .

Мне нужна точка монтирования в моем домашнем каталоге. Это для файлов, не являющихся медиафайлами. Я создал запись в /etc/fstab. Однако он принадлежал root, и я не мог редактировать в этом месте.

Ответ был на странице руководства для mount.cifs. Я добавил в fstab опцию uid=MyUserName. Мое имя пользователя на клиенте cifs такое же, как и на хосте cifs. Я не знаю, является ли это требованием, но это сработало.

Другие вопросы по тегам