Еще один небольшой шаг к освоению Raspberry Pi заключается в настройке сетевого доступа к размещенным на ней файлам.
Сетевой доступ к файлам организовывается по SMB-протоколу, для чего нужно установить на микрокомпьютер пакет Samba и настроить серверную часть. Необходимые для этого действия займут буквально несколько минут времени.
Содержание
Что нам понадобится
Для осуществления описываемых в этой статье действий понадобится:
- Raspberry Pi 3 Model B
- Внешний жесткий диск
- Локальная сеть
Процесс установки и настройки 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-протоколу.
Можно обойтись и без пароля, расшарив ресурсы для гостевого доступа. Но я рекомендую гостевой доступ не открывать, а пароль все-таки установить.
Пароль установлен, теперь надо отредактировать файл конфигурации:
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:
Если пароль введен верно, то видим расшаренные ресурсы.
Первый из них — корневая директория пользователя, она расшарена по умолчанию и только для чтения. Второй — жесткий диск:
Открываем его:
Все работает, файлы доступны для просмотра и изменения, значит все сделано правильно.
Заключение
Вот таким образом за несколько минут настраивается сетевой доступ к размещенным на Raspberry Pi файлам.
Сетевой доступ обязательно нужно настроить в случае, если Raspberry Pi 3 будет использоваться в качестве домашнего сервера. Да и в остальных случаях сделать это будет не лишним.
Raspberry Pi 3B (английская сборка)в интернет-магазине GearBest Raspberry Pi 3B (китайская сборка)в интернет-магазине GearBest
Здравствуйте Дмитрий, я настроил общий локальный доступ к каталогу, спасибо. Вопрос следующий, каким образом этот каталог можно открыть через браузер, аналогично ftp://ip:порт, я пытался реализовать с помощью установки ftp, но везде требуется ввод логина и пароля, окно авторизации убрать невозможно, анонимный доступ не работает на локальных пользователей. Еще рассматриваю последним вариантом nextcloud.
Добрый день.
Можно установить Apache / Nginx и хранить файлы в /var/www/название_каталога/. Открывать в браузере как обычный сайт.
Если нужен доступ из браузера не только на чтение, но и на запись, то можно установить на локальный веб-сервер файловый менеджер (FileRun, phpXplorer и т.п.). Все остальное аналогично предыдущему пункту.
Либо же Nextcloud.
Все верно вы написали.
Надо только перед правкой smb.conf лучше остановить самбу
sudo services samba stop
а потом запустить
все сделал как у вас,но комп и телик не видят расширенные папки.что делать?
Здравствуйте, добавьте пожалуйста в этот гайд информацию из этого источника: https://pimylifeup.com/raspberry-pi-samba/
У меня на винде только так и заработало.