Raspberry Pi 3. Организация сетевого доступа к файлам через Samba

Еще один небольшой шаг к освоению Raspberry Pi заключается в настройке сетевого доступа к размещенным на ней файлам.

Что такое Samba?

Для организации доступа к файлам расположенным на linux машинах с компьютеров под управлением ОС windows, был специально разработан пакет программ, которые позволяют обращаться к сетевым дискам и принтерам по протоколу SMB/CIFS. Пакет Samba имеет клиентскую и серверную части. Является свободным программным обеспечением, выпущенным под лицензией GPL. Samba представляет собой протокол, используемый Microsoft для разделения файлов и служб печати. Этот протокол был разработан в 1987 году и позже перенесен на платформы Linux Эндрю Триджеллом (Andrew Tridgell). Взаимодействие в сети компьютеров под управлением Windows построено на использовании протокола SMB (Server Message Block) — блоках серверных сообщений. Пакет Samba обеспечивает выполнение всех необходимых в этих случаях задач по открытию, закрытию, чтению, записи, поиску файлов, созданию и удалению каталогов, постановке задания на печать и удалению его оттуда. Возможности его условно можно разделить на две категории: предоставление ресурсов (под коими понимается доступ к системе принтеров и файлам) для клиентов Windows и доступ к ресурсам клиентов. То есть, компьютер под управлением Linux может выступать как в роли сервера, так и клиента. Огромным плюсом пакета samba является контроль доступа, который может быть реализован либо на уровне ресурсов (share level), когда какому-либо ресурсу в сети назначается пароль и соответствующие правила использования или же более совершенную и гибкую организацию на уровне пользователя, когда для каждого пользователя создается учетная запись на сервере, где помимо имени и пароля содержится вся необходимая информация о правах доступа к ресурсу. Прежде чем получить доступ к требуемому ресурсу, каждый пользователь проходит аутентификацию, после чего ему и предоставляются права согласно учетным записям.

Samba сервер Для работы Samba-сервера необходимо, чтобы были запущены два демона: smbd, обеспечивающий работу службы печати и разделения файлов для клиентов Samba сервера под управление ОС Windows, и nmbd, обеспечивающий работу службы имен NetBIOS. Для доступа к клиентам используется протокол TCP/IP. Как правило, Samba устанавливается вместе с дистрибутивом Linux. Проверить можно выполнив команду: $ whereis samba. И если не установлен то $ yum install samba-server Samba клиент Для доступа к сетевым ресурсам Windows из Linux необходим клиент Samba, и для того чтобы оценить доступность ресурсов Windows достаточно выполнить команду /usr/bin/smbclient -L host_name. Долее строка запросит пароль, но в большинстве случаев достаточно нажать Enter. Положительным аспектом клиента Samba является, то, что он отлично видит скрытые сетевые ресурсы, это те диски сетевое имя которых заканчивается знаком $.) Дальнейшем работа происходит путем набора команд, с помощью которых можно произвести все необходимые операции по работе с файлами. Для получения справки достаточно выполнить smb: > help.
Читайте также:  Mandrakelinux 10.1. Справочное руководство. Из исходных кодов

Достаточно многие пользователи 1с Предприятие используют БД в файловом варианте, ну, так, уж повилось:) и поэтому для грамотного взаимодействия пользователей с базой можно использовать сервер Samba. Что позволит ограничить доступ, или совсем его закрыть к базам 1с.

Конфигурация

  • Sabma 2 config
  • Sabma 3 config
  • Sabma 4 config

Основные параметры

  • security = share — share, user, DOMAIN, SERVER, ADS
  • guest ok = Yes – для подключения к ресурсу не требуется пароль
  • guest account [UserName] – указанный пользователь UNIX будет получать доступ к ресурсу
  • guest only = Yes – разрешить только гостевые соединения к общему ресурсу
  • available = yes
  • read only = no
  • browsable = yes
  • public = yes
  • writable = yes – можно записывать и удалять
  • create mask = 0664 — с этими правами будут создаваться файлы
  • directory mask = 0755 — с этими правами будут создаваться директории
  • force user = site — действия будут происходить от этого пользователя
  • force group = www-data

Переменные

Переменная Описание
%U имя пользователя сессии (имя пользователя, которое клиент хотел, не обязательно то же самое как то, которое он получил).
%G имя основной группы для %U.
%h Интернет имя хоста где запущена Samba.
%m NetBIOS имя клиентской машины (очень полезно) Этот параметр недоступен когда Samba слушает на 445 порту, т.к. клиенты больше не посылают эту информацию. Если вы используете этот макрос, то в разделе [global] установите smb ports = 139. Это заставит Самбу не слушать на порту 445 и разрешит, включит функциональные возможности Samba 2.x.
%L NetBIOS имя сервера. Это позволяет вам изменять вашу конфигурацию под клиента. У вашего сервера может быть «Раздвоение личности».
%M интернет имя клиентской машины.
%R Выбранный уровень протокола после протокольных переговоров. Это может быть один из CORE, COREPLUS, LANMAN1, LANMAN2 or NT1.
%d процесс id текущего процесса сервера.
%a архитектура удаленной машины. В настоящее время признаются Samba (Samba), the Linux CIFS file system (CIFSFS), OS/2, (OS2), Windows for Workgroups (WfWg), Windows 9x/ME (Win95), Windows NT (WinNT), Windows 2000 (Win2K), Windows XP (WinXP), and Windows 2003 (Win2K3). Остальные определяются как UNKNOWN.
%I IP адрес клиентской машины.
%i Локальный IP адрес с которым соединился клиент.
%T текущая дата и время.
%D имя домена или рабочей группы для текущего пользователя.
%w Разделитель winbind
%$(envvar) значение переменной envar.

Следующие замены применяются только к некоторым вариантам конфигурации (только когда связь была установлена):

Переменная Описание
%S имя текушего сервиса для всех.
%P корневая директория текущего сервиса для всех.
%u имя пользователя для текущего сервися для всех.
%g основная группа для %u.
%H домашняя директория для пользователя %u.
%N имя вашего NIS сервера домашних директорий. Это получено с вашего NIS entry. Если вы не компилировали Samba c with-automount опцией, это значение принимается как %L.
%p путь к сервису домашних директорий, полученный с вашего NIS entry. NIS записи разделяются как %N:%p.

Проверка

$ testparm -S

Настройка Samba

Для настройки сервера Samba необходимо сделать две вещи: задать пользовательский пароль и отредактировать файл конфигурации.

Начнем с пароля:

sudo smbpasswd -a pi

Этой командой мы задаем пароль для пользователя pi, с которым можно будет получить доступ к расшаренным на Raspberry Pi ресурсам по SMB-протоколу.

Можно обойтись и без пароля, расшарив ресурсы для гостевого доступа. Но я рекомендую гостевой доступ не открывать, а пароль все-таки установить. Пароль установлен, теперь надо отредактировать файл конфигурации:

sudo nano /etc/samba/

Настройка Samba

В этом файле нас в первую очередь интересует группа параметров [global]. В нее нужно добавить следующие строки:

[global] security = user encrypt passwords = true map to guest = bad user guest account = nobody

Заголовок [global] повторно писать не нужно, нужно просто добавить 4 строки под имеющийся заголовок.

Также нужно уделить внимание уже прописанному в [global] параметру:

workgroup = WORKGROUP

В нем указывается название рабочей группы, в которую входят объединенные в локальную сеть компьютеры. По умолчанию имя рабочей группы так и указывается WORKGROUP и трогать этот параметр не нужно. Но если у вас рабочая группа названа как-то нестандартно, то нужно изменить этот параметр, вписав вместо WORKGROUP ее правильное название.

Теперь прописываем ресурсы для расшаривания. Следующие строки нужно вписать в самый конец файла, вместе с заголовком в квадратных скобках:

[usbstorage] path = /mnt/usbstorage/ writeable = yes read only = no browseable = yes

Эти строки создают ресурс, который будет виден (browseable = yes) в сетевом размещении под названием usbstorage ([usbstorage]) и доступен для записи (writeable = yes, read only = no), и находящийся на Raspberry Pi по пути  /mnt/usbstorage.

То есть я расшариваю весь примонтированный к Raspberry Pi жесткий диск целиком.

Настройка Samba

Можно сделать несколько отдельных шар, прописав в конфиге несколько ресурсов с отдельными [названиями] и указав в каждом свой /путь/до/нужной/директории.

При этом нужно убедиться, что у пользователя, под которым мы будем логиниться по SMB-протоколу, есть права доступа к этим файлам. Если нет – их нужно задать:

sudo chmod -R 755 /путь/до/нужной/директории

Можно открыть гостевой доступ, прописав его следующим образом:

[пример ресурса с гостевым доступом] comment = Public Share path = /путь/до/нужной/директории read only = no guest only = yes guest ok = yes

Все это вопрос удобства и личных предпочтений.

Мне было удобнее расшарить весь диск целиком, сделав доступ к нему доступным по паролю.

Закончив редактировать конфигурацию Samba, перезагрузим Raspberry Pi для применения изменений:

sudo reboot

И проверим работоспособность введенных параметров.

Настройка Samba

Открываем “Сетевое окружение”, находим в нем свою Raspberry Pi:

Вводим заданный пароль для пользователя pi:

Если пароль введен верно, то видим расшаренные ресурсы.

Первый из них – корневая директория пользователя, она расшарена по умолчанию и только для чтения. Второй – жесткий диск:

Открываем его:

Все работает, файлы доступны для просмотра и изменения, значит все сделано правильно.

Подключение к общему ресурсу Samba из Windows

Пользователи Windows также могут подключиться к общему ресурсу Samba как из командной строки, так и из графического интерфейса. Следующие шаги показывают, как получить доступ к общему ресурсу с помощью проводника Windows.

  1. Откройте проводник и на левой панели щелкните правой кнопкой мыши «Этот компьютер».
  2. Выберите «Выбрать другое сетевое расположение» и нажмите «Далее».
  3. В поле «Интернет или сетевой адрес» введите адрес \samba_hostname_or_server_ipsharename Samba в следующем формате \samba_hostname_or_server_ipsharename .
  4. Нажмите «Далее», и вам будет предложено ввести учетные данные для входа, как показано ниже:
  5. В следующем окне вы можете ввести собственное имя для сетевого расположения. По умолчанию будет выбран сервер Samba.
  6. Нажмите «Далее», чтобы перейти к последнему экрану мастера настройки подключения.
  7. Нажмите «Готово», и будут показаны файлы на сервере Samba.