Как мне смонтировать общий ресурс 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. Я не знаю, является ли это требованием, но это сработало.