Создание общего хранилища файлов

Я работаю в комапнии Mail.ru Group старшим системным администратором и по долгу службы приходится сталкиваться с настройкой и установкой различных служб и сервисов. Один из таких — файловое хранилище с общим доступом. Такое хранилище может использоваться для доступа к файлам с нескольких компьютеров по сети. Так же хранилище поддерживает парольный доступ, что делает его удобным инструментом для хранения приватных данных.

Требования

  1. Ubuntu 20.04 или любой другой дистрибутив.
  2. root доступ к Linux серверу

Установка

Функционал общих папок на Linux реализуется демоном Samba. Для его установки выполните следующие команды

sudo apt update
sudo apt install samba
sudo systemctl status smbd

Последняя команда должна показать что демон успешно установлен и работает. Теперь его необходимо настроить.

Настройка демона выполняется в файле

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

sudo vim /etc/samba/smb.conf

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

[Public]
    path = /storage
    browseable = yes
    guest ok = yes
    guest only = yes
    read only = no
    force user = nobody
    force create mode = 0777
    force directory mode = 0777

Переменную path стоит изменить указав путь к папке на сервере которую нужно опубликовать. Слово [public] означает как будет называться папка для удаленных клиентов. В примере использована папка /storage, если она не существует, то ее необходимо создать и установить соответствующие права доступа:

# Первую команду необходимо выполнять только если вы создаете новую папку. Для
 существующей папки достаточно второй команды.
 sudo mkdir /storage
 sudo chmod 777 /storage

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

 [Protected]
   path = /secret-storage
   valid users = @smbgroup
   guest ok = no
   writable = yes
   browsable = yes

Для применения настроек демона его необходимо перезагрузить командой sudo

Теперь необходимо создать пользователей для доступа к защищенной папке. На самом деле в этом случае используются обычные системные пользователи которым разрешается доступ к Samba папкам. Для создания нового пользователя и его активации нужно выполнить команды:

sudo addgroup smbgroup # создание группы для пользователей Samba. Достаточно выполнить один раз.
sudo useradd -G smbgroup john# Создание пользователя
sudo smbpasswd -a john # Добавление пользователя в Samba
sudo smbpasswd -e john # Активация пользователя

В Windows 10 существует проблема автоматического обнаружения общих папок созданных на базе Samba. Эта проблема решается специальным скриптом. Для его установки и запуска нужно выполнить команды:

 sudo curl https://raw.githubusercontent.com/christgau/wsdd/master/src/wsdd.py
 > /usr/bin/wsdd
 sudo chmod +x /usr/bin/wsdd
 sudo cat > /etc/systemd/system/wsdd.service <<EOF
 [Unit]
 Description=Web Services Dynamic Discovery host daemon
 After=network-online.target
 Wants=network-online.target
 Wants=smb.service
 [Service]
 Type=simple
 ExecStart=/usr/bin/wsdd –s
 [Install]
 WantedBy=multi-user.target
 EOF
 systemctl status wsdd –now

После этого сервер общих папок будет доступен в режиме обзора сети Windows.