Установка и настройка Samba на Raspberry Pi 3

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

Дата Автор 5 комментариев 40 460 просмотров

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

Сетевой доступ к файлам организовывается по SMB-протоколу, для чего нужно установить на микрокомпьютер пакет Samba и настроить серверную часть. Необходимые для этого действия займут буквально несколько минут времени.

Что нам понадобится

Для осуществления описываемых в этой статье действий понадобится:

Процесс установки и настройки Raspbian описан в статье «Raspberry Pi 3. Обзор и начало работы».

Подключение жесткого диска к Raspberry Pi описано в статье «Правильное монтирование USB HDD и флешек».

Установка Samba

Первым делом нужно установить Samba — программу, реализующую доступ к файлам по протоколу SMB.

Вариант 1. Установка из репозитория

Samba имеется в стандартных репозиториях, поэтому установка заключается в выполнении одной единственной консольной команды:

sudo apt-get install samba

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

Вариант 2. Сборка из исходников

Добавлено: 16 мая 2020 года

В некоторых случаях требуется установить более свежую версию Samba по сравнению с доступной в стандартных репозиториях.

Шаг 1. Скачаем и распакуем архив с дистрибутивом:

wget --content-disposition https://github.com/samba-team/samba/archive/samba-4.9.2.tar.gz
tar -xf samba-samba-*.tar.gz

И удалим установленный пакет samba, если до этого утилита уже устанавливалась из репозитория:

sudo apt remove samba

Шаг 2. Установим необходимые для сборки пакеты:

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install acl attr autoconf bind9utils bison build-essential debhelper dnsutils docbook-xml docbook-xsl flex gdb libjansson-dev krb5-user libacl1-dev libaio-dev libarchive-dev libattr1-dev libblkid-dev libbsd-dev libcap-dev libcups2-dev libgnutls28-dev libgpgme-dev libjson-perl libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl libpopt-dev libreadline-dev nettle-dev perl perl-modules pkg-config python-all-dev python-crypto python-dbg python-dev python-dnspython python3-dnspython python-markdown python3-markdown python3-dev xsltproc zlib1g-dev liblmdb-dev lmdb-utils python-gpg python3-gpg git libsystemd-dev perl-modules-5.26 libkrb5-dev krb5-kdc winbind

ВНИМАНИЕ: это не универсальный список нужных пакетов, требования к нему могут немного различаться в зависимости от используемого дистрибутива Linux. Поэтому если на этапе конфигурации и сборки возникают ошибки, то нужно обратиться к справочной документации на этой странице и посмотреть требования для своей системы.

Шаг 3. Перейдем в папку с распакованным дистрибутивом:

cd samba-samba-*/

И начнем конфигурирование:

DEB_HOST_MULTIARCH=$(dpkg-architecture -qDEB_HOST_MULTIARCH)
./configure \
    --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc \
    --localstatedir=/var --libdir=/usr/lib/$DEB_HOST_MULTIARCH \
    --with-privatedir=/var/lib/samba/private \
    --with-smbpasswd-file=/etc/samba/smbpasswd \
    --enable-fhs --enable-spotlight --with-systemd

Скрипт конфигурации может ругаться в процессе работы, что ему не удалось что-то найти. Это нормально, главное чтобы процесс конфигурации завершился без ошибок. Если ошибки возникли — возвращаемся к предыдущему шагу, читаем документацию и доустанавливаем недостающие пакеты, после чего запускаем скрипт со всеми параметрами заново.

Шаг 4. Сборка и установка

Запустим сборку пакета:

make -j$(nproc)

После завершения процесса запустим установку:

sudo make install

Шаг 5. Запуск Samba

Запускаем сервис:

sudo cp bin/default/packaging/systemd/*.service /lib/systemd/system
sudo systemctl daemon-reload
sudo systemctl enable {nmb,smb,winbind}.service
sudo systemctl start {nmb,smb,winbind}.service

И убедимся, что он заработал:

sudo systemctl status smb.service

Настройка Samba

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

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

sudo smbpasswd -a pi

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

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

sudo nano /etc/samba/smb.conf

В этом файле нас в первую очередь интересует группа параметров [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 жесткий диск целиком.

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

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

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

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

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

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

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

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

sudo reboot

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

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

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

Установка и настройка Samba на Raspberry Pi 3

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

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

Установка и настройка Samba на Raspberry Pi 3

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

Установка и настройка Samba на Raspberry Pi 3

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

Заключение

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

Сетевой доступ обязательно нужно настроить в случае, если Raspberry Pi 3 будет использоваться в качестве домашнего сервера. Да и в остальных случаях сделать это будет не лишним.

Raspberry Pi 3B (английская сборка)в интернет-магазине GearBest Raspberry Pi 3B (китайская сборка)в интернет-магазине GearBest

Автор статьи:
Дмитрий
Руководитель отдела в IT-компании. Веду этот блог с 2013 года, пишу о гаджетах и домашней автоматизации, обозреваю одноплатные компьютеры, неспешно собираю «умный дом».

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

  1. Здравствуйте Дмитрий, я настроил общий локальный доступ к каталогу, спасибо. Вопрос следующий, каким образом этот каталог можно открыть через браузер, аналогично ftp://ip:порт, я пытался реализовать с помощью установки ftp, но везде требуется ввод логина и пароля, окно авторизации убрать невозможно, анонимный доступ не работает на локальных пользователей. Еще рассматриваю последним вариантом nextcloud.

    • Добрый день.

      Можно установить Apache / Nginx и хранить файлы в /var/www/название_каталога/. Открывать в браузере как обычный сайт.

      Если нужен доступ из браузера не только на чтение, но и на запись, то можно установить на локальный веб-сервер файловый менеджер (FileRun, phpXplorer и т.п.). Все остальное аналогично предыдущему пункту.

      Либо же Nextcloud.

  2. Все верно вы написали.
    Надо только перед правкой smb.conf лучше остановить самбу
    sudo services samba stop
    а потом запустить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

[Хамство, оскорбления и попытки крауд-маркетинга будут удалены]