Содержание
- Вступление
- Что я использовал для сборки своего NAS
- Настраиваем и создаем папку для общего доступа
- Создаем папку для авторизованных пользователей
- Создаем папку для конкретного пользователя
- Значения строк в конфигурационном файле Samba
- Заключение
Вступление
Скажу сразу, ниже многабукаф, которое можно смело пропустить.
Не так давно приобрел новое для себя устройство — TV-приставка на Android. Приставка расширяет возможности моего телевизора, в котором нет ни каких smart сервисов. Просто обычный телевизор с возможностью просматривать телеканалы. Телевизор меня полностью устраивает своей диагональю и картинкой, по этому не стал рассматривать покупку нового.
С помощью приставки я могу просматривать различные фильмы и сериалы из различных online-сервисов, как платных, так и бесплатных. Но что делать, если хочется посмотреть фотографии и видео из домашнего архива? Или может есть коллекция загруженных фильмов?
Есть несколько вариантов. К примеру можно включить показ фотографий с телефон. Зайдя в галерею можно включить трансляцию фото и видео на приставку. Со стационарного компьютера или ноутбука можно создать общую папку в которой можно хранить фото и видео для дальнейшего просмотра с приставки.
В такой связке необходимо, что бы ПК был постоянно включен, что бы иметь доступ к сетевой папке, а так же большая галерея видео и фото захламляет память ПК. ПК может расходовать достаточно много электроэнергии, в следствии чего в конце месяца придет не маленький счет за электричество.
Достаточно долгое время я использовал примерно такую связку. У меня был настроен старенький компьютер под небольшой сервер, на котором была расшарена папка, в которой я хранил свои коллекции фото, видео, да и просто информацию, к которой нужен был доступ с различных устройств в домашней сети. Компьютер слабенький, блок питания на 250 ват — не много, но и не мало. Так же эта махина занимает достаточно много места, а вентиляторы охлаждения не самые тихие.
В определенный момент мне это надоело, решил приобрести себе NAS для хранения всех данных на нем. Они специально для этого предназначены, могут работать круглосуточно при минимальном энергопотреблении — в среднем до 50 Вт. Но вот цены на NAS достаточно высокие — от 13 490руб. и это без HDD. Да, есть модели чуть дешевле, но они всего на 1 HDD, мне такой не подходит.
Было принято решение собрать из одноплатного ПК Raspberry Pi 3, т.к. один такой у меня лежал без дела.
Что я использовал для сборки своего NAS
- Raspberry Pi 3 B+
- карта памяти Samsung microSDHC EVO+ V2 32 GB — в дальнейшем отказался от нее.
- блок питания Red Line NTC-2.4 A
- кабель Greenconnect USB 2.0 GCR-50700, 3A, 1.5 М
- 3.5″ Внешний бокс DEXP UA003
- жесткий диск WD Blue 1 TB
Настраиваем и создаем папку для общего доступа
ОС можно использовать на свой выбор, как и одноплатный ПК, которых сейчас достаточно много.
ОС установил от самой компании Raspberry — Raspberry Pi OS Lite. Почему lite? Потому что на ней нет ни чего лишнего предустановленного, да и графическая оболочка нам будет не нужна.
Распаковываем ОС на флешку, не забываем добавить файл ssh без расширения на раздел boot, что бы не подключать к одноплатнику монитор и клавиатуру с мышью, а настроить все через подключение с помощью PuTTY по SSH.
В настройках роутера или с помощью сканера сети, к примеру Advanced IP Scanner, находим ip адрес нашего будущего NAS и подключаемся к нему с помощью PuTTY. Сразу меняем пароль пользователя pi командой
passwd
Далее устанавливаем статический ip адрес — инструкция в этой статье.
Обновляем индекс репозитория и систему
sudo apt update
sudo apt upgrade
Создаем папку, которую в дальнейшем будем расшаривать.
sudo mkdir -m 1777 /mnt/shared
Немного разжую что в этой команде используется.
mkdir — создает новую папку (каталог)
-m (—mode=режим) — назначить режим доступа (права). По умолчанию mod принимает значение 0777, что обеспечивает неограниченные права
1777 — значение устанавливает Sticky bit (1) (липкий бит — sticky bit используется в основном для каталогов, чтобы защитить в них файлы. Из такого каталога пользователь может удалить только те файлы, владельцем которых он является. Примером может служить каталог /tmp, в который запись открыта для всех пользователей, но нежелательно удаление чужих файлов.), чтобы предотвратить случайное удаление каталога и даёт каждому пользователю права на чтение/запись/выполнение (777)
/mnt/shared — путь к самой папке. Папка может быть где угодно. Просто мне так привычнее, а так же я использую внешний HDD для этой папки.
Подключаем HDD и назначаем его путь до нужной папки. Я отформатировал диск в NTFS. Если Raspberry Pi выйдет из строя или просто понадобится подключить HDD к ПК на Windows — ни каких дополнительных манипуляций проводить не придется, он просто отобразится в системе как жесткий диск.
Затем устанавливаем Samba
sudo apt install samba samba-common-bin
Настраиваем samba, для этого изменяем файл конфигурации. Для начала сделаем резервную копию файла конфигурации
cp /etc/samba/smb.conf /etc/samba/smb.conf_sample
Далее редактируем конфигурационный файл samba
sudo nano /etc/samba/smb.conf
Удаляем все строки. Вставляем следующее
[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
wins support = no
Так же добавляем
[shared]
comment = Pi shared folder
path = /mnt/shared
browseable = yes
writeable = Yes
create mask = 0777
directory mask = 0777
public = yes
guest ok = yes
Параметр «comment =» — не обязательный, дает обозначение папки.
Сохраняем файл ctrl+o, закрываем ctrl+x
Перезагружаем сервер Samba
sudo service smbd restart
С такой настройкой мы разрешаем всем пользователям, включая гостей локальной сети, иметь полный доступ к нашей папке. Удобно использовать ее всем членам семьи не вводя ни каких логинов и паролей.
Но что, если нам нужна папка, к которой будет доступ только при вводе пароля?
Создадим еще одну папку
sudo mkdir -m 1777 /mnt/myshared
Добавим ее в файл конфигурации samba
[myshared]
path = /mnt/myshared
browseable = yes
writeable = yes
guest ok = no
create mask = 0777
directory mask = 0777
Теперь для доступа к папке потребуется указать логин и пароль к папке
Пароль для пользователя Samba устанавливаем следующей командой
sudo smbpasswd -a pi
Для вступления новых настроек в силу перезагрузим сервис samba
sudo service smbd restart
Создаем папку, к которой доступ только у определенного пользователя
sudo mkdir -m 1777 /mnt/user
Создадим пользователя и установим пароль
sudo adduser user1
sudo smbpasswd -a user1
Добавим ее в файл конфигурации samba
[user]
path = /mnt/user
valid users = user1
guest ok = no
browseable = yes
writeable = Yes
create mask = 0777
directory mask = 0777
Для вступления новых настроек в силу перезагрузим сервис samba
sudo service smbd restart
В таком виде доступ к папке user по шаре будет только у пользователя user1.
Объясню значения строк в конфигурационном файле Samba
Конфигурационный файл состоит из трех секций
global — данная секция отвечает за общие настройки Samba-сервера
public и private — секции описания настроек директорий общего доступа
В секции global присутствуют пять параметров:
- workgroup — рабочая группа. Для упрощения работы пользователей WORKGROUP указывается, как группа по умолчанию. Если в вашей сети имя рабочей группы изменено, то следует изменить это значение и для Samba
- security — уровень безопасности сервера. Значение user означает авторизацию по паре логин/пароль
- map to guest — параметр определяет способ обработки запросов. Значение bad user означает, что запросы с неправильным паролем будут отклонены, даже если такое имя пользователя существует
- wins support — включить или выключить поддержку WINS
- dns proxy — возможность проксирования запросов к DNS
Настройки директорий выполняются в соответствующих секциях:
path — полный путь до директории на жестком диске
guest ok — возможность доступа к каталогу без пароля (гостевой)
browsable — показывать ли каталог (“шару”) на сервере среди прочих. Если параметр установлен как “no”, то доступ будет возможен по полному пути, например ip-addresshidden_directory
force user — пользователь от которого ведется работа с каталогом. Для повышения безопасности сервера, обычно используют nobody. Главное, не использовать пользователя root — это небезопасно
writable — установка значения как “yes” позволяет пользователю выполнять действия над файлами внутри каталога — переименование, добавление, удаление, перемещение в подкаталог и копирование
valid users — список пользователей у которых есть доступ к каталогу. Если пользователей несколько, их имена указываются через запятую. Если необходим доступ для пользователей принадлежащих группе, перед именем группы устанавливается символ ”at” @ (“собака”)
Важно! Имя директории общего доступа, отображаемое пользователям, равно имени секции в которой оно описано.
Проверяем настройки с помощью команды
testparm -s
Заключение
Такую связку я использую уже около двух лет. Все это работает 24/7. Около полугода назад реанимировал свой старенький бесперебойник, заменив в нем аккумулятор. Пришлось сделать это из-за частых выключений электроэнергии в моем районе.
Ранее я использовал для операционной системы карту памяти Samsung microSDHC EVO+ V2 32 GB, но не так давно пришлось от нее отказаться. Перенес ОС на жесткий диск, разбив его на разделы. Начиная с Raspberry Pi 3 B+ одноплатник без костылей поддерживает загрузку ОС с USB устройств. Скорость загрузки дольше, т.к. упирается в USB 2.0, но на работу хранилища не повлияло.
Карточка просто вышла из строя, т.к. я параллельно на сервере установил сервер Zabbix, для мониторинга некоторых устройств и работы сервера, где крутятся сайты. Делал это для понимания как работает Zabbix, да и полезная просто штука.
Zabbix собирал слишком много данных, опрашивая и записывая информацию в базу каждую секунду. За 5 месяцев база разрослась более чем на 5гб. Уменьшить частоту обращений можно в настройках триггеров. Возможно, когда-нибудь снова установлю его. Если это произойдет, обязательно напишу об этом еще одну статью.