← Документация Hope·HopeDFShopedc.ru
HopeDFS · Документация

Руководство администратора

Панель: https://<сервер или VIP>:7443/. В кластере можно открывать любой узел — изменения конфигурации выполняет координатор и рассылает всем узлам.

Язык панели — русский или английский: переключатель RU / EN в шапке панели и на странице входа. Выбор запоминается в браузере. Переводятся и сообщения сервера (ошибки, состояния); журнал службы и журнал аудита показываются как записаны.

1. Как HopeDFS представляет Linux-папки для Windows

Windows HopeDFS на Linux
Общая папка \\СЕРВЕР\Шара каталог Linux, например /srv/data/Шара
NTFS-разрешения, владелец, аудит дескриптор безопасности в xattr user.hopedfs.sd
Атрибуты «Только чтение», «Скрытый», «Архивный» xattr user.hopedfs.dos (файлы, начинающиеся с точки, — скрытые)
Время создания xattr user.hopedfs.btime
Альтернативные потоки (file.txt:Zone.Identifier) xattr user.hopedfs.ads.<имя>
«Предыдущие версии» снимки в <шара>/.hopedfs/snapshots/@GMT-… (папка .hopedfs клиентам не видна; там же база репликации площадок и хранилище защиты от шифровальщиков)
Имена без учёта регистра поиск по имени без учёта регистра; на диске сохраняется регистр, заданный при создании

Файлы, положенные в папку средствами Linux (scp, rsync, NFS), получают NTFS-разрешения наследованием от родительской папки — как при копировании в папку на Windows Server.

Доступ к тем же файлам из Linux (локально или по NFS) идёт мимо NTFS-разрешений — их проверяет только HopeDFS. Права Linux новых файлов задаются в «Параметрах SMB» (по умолчанию 0664/0775).

2. Общие папки

«Общие папки» → «Создать шару»:

Файл, не изменившийся с прошлого снимка, связывается с ним жёсткой ссылкой и места не занимает; изменённый копируется через reflink — на XFS (reflink=1) и Btrfs мгновенно и без расхода места, пока файл не изменят. На ext4 reflink нет: первый снимок — полная копия данных шары, каждый следующий — копии изменённых файлов. Для таких шар раздел «Предыдущие версии» показывает предупреждение; следите за свободным местом на томе или размещайте шары с частыми снимками на XFS/Btrfs.

В корне каждой шары HopeDFS держит три скрытых файла-ловушки защиты от шифровальщиков (!!_Archive_2019.docx, ~~_backup_finance.xlsx, ЯЯ_Резерв_договоры.pdf, раздел 17). Пользователи их не видят; не удаляйте и не меняйте их по сети — это будет воспринято как атака.

Шары также можно создавать и удалять из Windows: «Управление компьютером» → «Подключиться к другому компьютеру» → «Общие папки» (пути вида C:\srv\data\Папка переводятся по таблице томов в «Параметрах SMB»).

3. NTFS-разрешения

Два равноценных способа:

  1. Windows Проводник: свойства файла/папки → «Безопасность» → «Изменить» / «Дополнительно» (наследование, владелец, аудит, действующие права). Требуется право «Смена разрешений» на объекте (администраторы сервера имеют его всегда через привилегии).
  2. Панель → «Файлы и разрешения»: выберите шару и папку/файл: - Разрешения — список записей (явные и унаследованные), «Добавить» (выбор пользователя/группы, тип, «Применяется к», общие или дополнительные разрешения), «Отключить наследование» (преобразовать в явные или удалить), «Заменить все записи разрешений дочернего объекта»; - Аудит — записи SACL (успех/отказ), события пишутся в «Журнал аудита»; - Владелец — смена владельца, при необходимости рекурсивно; - Действующие права — что получит выбранный пользователь с учётом групп, NTFS и разрешений шары.

Содержимое папки загружается частями по мере прокрутки, поэтому папки с сотнями тысяч файлов открываются так же быстро, как маленькие; над списком — число объектов и поиск по части имени (ищет сервер по всей папке, без учёта регистра).

4. Пользователи и вход

«Домен» → «Подключить сервер к домену»: 1. DNS-имя домена и контроллер (DNS-имя или IP). 2. Доверие сертификату контроллера — сертификат проверяется всегда. Варианты: - корневой CA домена установлен в Linux (/usr/local/share/ca-certificates + update-ca-certificates) или вставлен в панели — тогда контроллер указывают по DNS-имени из поля SAN его сертификата (сертификаты AD CS для контроллеров его содержат); - «Получить сертификат контроллера» → сверить отпечаток SHA-256 с контроллером → «Доверять этому сертификату» (подходит для самоподписанных сертификатов и подключения по IP). 3. Учётка с правом создавать учётки компьютеров (пароль передаётся только по LDAPS и не сохраняется).

Для каждой роли создаётся учётка компьютера ИМЯ$ с SPN cifs/ и HOST/. По её ключам HopeDFS сам проверяет билеты Kerberos — при входе пользователей к контроллеру не обращается.

Как входят пользователи: - доменные — Kerberos: клиент обращается по имени роли (\\HOPEFS\Шара), нужна DNS-запись A HOPEFS → VIP (HopeDFS регистрирует её сам, раздел 16); - локальные учётки сервера — NTLM (в т.ч. при обращении по IP); - NTLM для доменных учёток не поддерживается: проверить его можно только на контроллере через NETLOGON, а HopeDFS связывается с доменом исключительно по LDAPS. В журнале такой вход отклоняется с подсказкой. - вход доменных администраторов в веб-панель — проверкой пароля на контроллере по LDAPS (bind); - клиенты Linux входят по Kerberos так же (mount -t cifs //hopefs/Шара /mnt -o sec=krb5 при билете kinit), в том числе клиенты, не требующие взаимной проверки подлинности.

Выбор пользователей и групп в Windows. На вкладке «Безопасность» шары HopeDFS кнопка «Добавить» открывает стандартное окно выбора; Windows спрашивает у сервера, член ли он домена (интерфейс DSSETUP), и предлагает искать в домене сервера. Локальные учётки сервера — «Размещение» → имя сервера.

Контроллер с несколькими доменами (HopeDC с несколькими доменами, глобальный каталог леса AD). HopeDFS выбирает базу поиска по контексту имён, совпадающему с указанным DNS-именем домена. Учётку для подключения указывайте как user@домен — короткое Administrator на таком контроллере неоднозначно.

«Проверить связь» показывает состояние сертификата каждого контроллера, LDAPS-вход и поиск, ключи Kerberos. Группы администраторов панели задаются в «Параметрах подключения».

Служебная учётка для поиска в каталоге (необязательно, рекомендуется для рабочей установки). Поиск в каталоге (выбор пользователей и групп, имена владельцев, «Действующие права») выполняется под служебной учёткой, если она задана, иначе — под учёткой компьютера роли (HOPEFS$). Отдельная учётка делает поиск независимым от пароля HOPEFS$ и видимым в журналах контроллера. Настройки учётки в домене: - член только группы «Пользователи домена» (прав чтения каталога достаточно); - «Срок действия пароля не ограничен» — иначе поиск остановится, когда пароль истечёт; - запрет локального входа и входа через службы удалённых рабочих столов (групповая политика).

Пароль служебной учётки проверяется входом по LDAPS при сохранении. «Проверить связь» показывает, под какой учёткой идёт поиск, и предупреждает, если служебная учётка не задана, не входит или у неё ограничен срок действия пароля. Для входа пользователей в шары по Kerberos служебная учётка не используется. Проверку сертификата можно отключить только переменной окружения HOPEDFS_LDAP_INSECURE_TLS=1 (небезопасно, для тестового стенда; панель показывает предупреждение).

При добавлении новой роли после подключения к домену выполните подключение повторно — будет создана учётка для её имени.

Пароль учётки компьютера роли. HopeDFS хранит пароль ИМЯ$ (из него выводятся ключи Kerberos) и сам его не меняет. Если пароль сменили в домене, билеты Kerberos будут шифроваться новым ключом и вход доменных пользователей перестанет работать. «Проверить связь» это обнаружит (сравнивается версия ключа msDS-KeyVersionNumber в домене и у HopeDFS), в журнале службы отказ входа будет с той же подсказкой. Обновить: «Домен» → «Учётки компьютеров ролей» → «Пароль»: - Пароль уже сменили в домене — ввести новый пароль; HopeDFS проверит его входом этой учёткой по LDAPS и сохранит вместе с новой версией ключа; - Сбросить пароль — HopeDFS сам задаст новый случайный пароль по LDAPS учёткой с правом сброса пароля (она не сохраняется); удобно для плановой смены или если новый пароль неизвестен.

Прежний пароль сохраняется как предыдущий: билеты, выданные клиентам до смены, принимаются до истечения срока. В кластере новый пароль сразу получают все узлы. Третий способ — «Импорт keytab» с новыми ключами.

5. Мониторинг

6. Параметры SMB

Рабочая группа, описание сервера, диапазон версий SMB (минимум 2.0.2, SMB1 не поддерживается), обязательная подпись, шифрование всех шар, отказ клиентам без шифрования, NTLM вкл/выкл, гостевой и анонимный доступ, таймаут простоя сеансов, права Linux для новых файлов, таблица томов Windows → Linux, срок сеанса панели.

7. Пространства имён DFS

«Пространства DFS» → корень Company на роли HOPEFS со ссылками Finance → \\fs2\finance, Docs → \\HOPEFS\Docs. Клиенты открывают \\HOPEFS\Company\Finance и прозрачно попадают на цель. Несколько целей у ссылки — клиент выберет доступную. В корне пространства папки-ссылки видны в Проводнике как папки (как на Windows-сервере пространства — точки повторной обработки DFS), поэтому переход двойным щелчком из \\HOPEFS\Company в Finance работает так же, как ввод полного пути. Цели упорядочиваются по сайту клиента: сначала серверы его сайта, затем по стоимости связи сайтов (сайты AD или таблица «Репликация площадок» → «Сайты и подсети», см. раздел 15). Папку, реплицируемую между площадками, можно опубликовать в пространстве имён одной кнопкой — ссылка получит целями все её копии.

Доменное пространство — \\hope.local\Company вместо \\HOPEFS\Company: путь не привязан к серверу, серверов пространства может быть несколько (отказоустойчивость, разные площадки), а клиентов к ним направляет контроллер домена. Конфигурация хранится в AD так же, как у Windows Server 2008+ (CN=Dfs-Configuration,CN=System, объекты msDFS-Namespacev2 / msDFS-Linkv2), поэтому HopeDFS можно подключить сервером к пространству, созданному в Windows, а серверы Windows и HopeDFS могут обслуживать одно пространство вместе. Папками пространства, где есть серверы HopeDFS, управляйте из панели HopeDFS: консоль «Управление DFS» вносит изменения через сервер пространства по RPC (NETDFS), которого в HopeDFS нет.

8. Дедупликация данных

«Общие папки» → свойства шары → вкладка «Дедупликация». По расписанию HopeDFS находит одинаковые файлы и объединяет их на уровне блоков файловой системы через reflink (системный вызов FIDEDUPERANGE — ядро побайтно сверяет данные перед объединением, повредить файлы нельзя). Аналог Data Deduplication в Windows Server, но на уровне ФС. Требуется XFS (reflink=1) или Btrfs; на ZFS дедупликация включается средствами самой ФС (zfs set dedup=on), на ext4 reflink нет. В свойствах шары виден результат последнего прогона (сэкономлено, групп, файлов) и кнопка «Запустить сейчас». Открытые на запись файлы не трогаются; служебная папка снимков .hopedfs пропускается.

9. NFS

Раздел «NFS» и вкладка «NFS» в свойствах шары. Встроенный сервер NFS 4.0, 4.1 и 4.2 экспортирует те же папки, что и по SMB, на одном порту TCP (по умолчанию 2049), без отдельных portmap/mountd/NLM. Доступ проверяется теми же NTFS-дескрипторами, разрешениями общего ресурса, мандатными метками, квотами и фильтрами файлов, что и по SMB; пространство имён единое (файл, созданный по NFS, виден по SMB и наоборот), открытия и блокировки — общие с SMB.

Подключение клиента Linux

mount -t nfs4 сервер:/Шара /mnt/share                  # AUTH_SYS (uid/gid)
mount -t nfs4 -o sec=krb5p сервер:/Шара /mnt/share     # Kerberos с шифрованием

Корень сервер:/ — псевдо-ФС со списком шар роли, к адресу которой подключился клиент.

Проверка подлинности (поле «Проверка подлинности» в свойствах экспорта; клиент получает список через SECINFO, неподходящий способ — ошибка WRONGSEC):

Способ Что даёт
sys AUTH_SYS: uid/gid клиента → SID по таблицам сопоставления (иначе S-1-22-1-<uid>/S-1-22-2-<gid>); root_squash, all_squash
krb5 Kerberos: пользователь по билету (PAC или LDAPS), права — те же, что у него по SMB
krb5i + контроль целостности каждого запроса и ответа (MIC)
krb5p + шифрование всего трафика (AES)

Для Kerberos сервер должен быть в домене, а у учётки роли — SPN nfs/<имя роли> и nfs/<имя роли>.<домен> (для новых подключений к домену добавляются автоматически; для уже подключённых — кнопка «Обновить SPN» в разделе «Домен»; для FreeIPA/ALD Pro — служба nfs/… в импортированном keytab). Нужен AES (по умолчанию во всех современных доменах).

Права (NFSv4-ACL ↔ NTFS). Атрибуты acl (4.0) и dacl/sacl (4.1) — это тот же NTFS-дескриптор: маски прав совпадают с правами Windows побитно, флаги наследования переводятся по смыслу, субъекты — имя@домен (OWNER@/GROUP@/EVERYONE@ → CREATOR OWNER/CREATOR GROUP/Все). Изменение ACL с клиента Linux (nfs4_setfacl) сразу видно на вкладке «Безопасность» в Windows и наоборот; унаследованные записи сохраняются, для папок пересчитывается наследование. Нужно право «Смена разрешений» (WRITE_DAC), для аудита (sacl) — привилегия SeSecurity.

Блокировки и состояние. LOCK/LOCKT/LOCKU с семантикой POSIX (частичное снятие, смена типа), сессии NFSv4.1 со слотами и кэшем ответов, для NFSv4.0 — кэш повторных запросов (DRC) и кэш ответов владельцев (повтор запроса не выполняется дважды), аренда 90 с. Сервер «вежливый»: состояние клиента с истёкшей арендой хранится ещё до половины срока аренды и освобождается раньше, только если мешает другому клиенту; после этого старый stateid в 4.0 получает NFS4ERR_EXPIRED. Блокировки одного владельца сливаются (как в POSIX). Блокировки SMB для клиентов NFS обязательны (как в Windows), блокировки NFS между клиентами NFS — рекомендательные (как у Linux knfsd). Открытие режимами совместного доступа (deny) и удаление открытого по SMB файла согласованы между протоколами.

Защита от шифровальщиков действует и для клиентов NFS (раздел 17).

NFS 4.2: копирование на сервере (cp на клиенте Linux не гоняет данные по сети), CLONE (мгновенные копии через reflink на XFS/Btrfs), SEEK (разреженные файлы), ALLOCATE/DEALLOCATE (fallocate).

Не поддерживается: делегирования (кэширование файла на клиенте — клиент работает без них), pNFS, блочные и символьные устройства на шарах (FIFO и сокеты — можно), RDMA.

Кластер. NFS работает на адресе роли (VIP) и переезжает вместе с ней. Дескрипторы файлов постоянные (как у knfsd, на основе дескрипторов ядра) — переживают переименование и перезапуск службы; после переключения на другой узел с общим томом клиенты продолжают работу, с репликацией — повторяют LOOKUP.

Включение/выключение сервера и смена порта применяются после перезапуска службы.

10. Мандатное управление доступом (МРД)

Раздел «Мандатный доступ». Мандатная модель уровней конфиденциальности и категорий поверх дискреционных NTFS-разрешений. В отличие от решений, где метки действуют только для Linux-клиентов, HopeDFS сам выполняет проверку доступа, поэтому МРД действует и для клиентов Windows по SMB, и для NFS.

11. Вход доменных пользователей по IP-адресу

По умолчанию Windows использует Kerberos только при обращении к серверу по имени. Чтобы доменные пользователи могли подключаться и по IP-адресу (\\10.0.0.50\Шара), HopeDFS регистрирует в домене имена служб (SPN) учёток ролей по их IP-адресам (cifs/10.0.0.50). Это включено по умолчанию при вводе в домен (флажок «Регистрировать SPN по IP-адресам ролей»). Дополнительно на клиентах Windows нужно включить параметр TryIPSPN — скачайте TryIPSPN.reg в разделе «Домен» («Вход по IP-адресу») и раздайте его групповой политикой. Там же — кнопка «Обновить SPN» (после смены плавающих IP или добавления узлов). NTLM для доменных учёток по-прежнему не поддерживается (связь с доменом только по LDAPS); по IP-адресу работает именно Kerberos.

12. Подключение к FreeIPA / ALD Pro

HopeDFS подключается к домену FreeIPA / ALD Pro по LDAPS так же, как к AD (раздел «Домен» → «Подключить», учётка администратора домена, например admin). Тип каталога определяется автоматически. Отличия от AD:

  1. Нужен ipa-adtrust-install на контроллере — иначе у пользователей и групп нет Windows-совместимых SID (ipaNTSecurityIdentifier) и HopeDFS откажется подключаться с понятным сообщением.
  2. Системная учётка для поиска создаётся автоматически: uid=hopedfs-<узел>,cn=sysaccounts,cn=etc,… (штатный для FreeIPA способ подключения сторонних служб; пароль генерирует и хранит только HopeDFS, пароль администратора не сохраняется). При выводе из домена учётка удаляется.
  3. Ключи служб выдаёт контроллер. Создайте службы и получите keytab: ipa service-add cifs/<роль>.<домен> ipa service-add nfs/<роль>.<домен> ipa-getkeytab -p cifs/<роль>.<домен> -k hopedfs.keytab ipa-getkeytab -p nfs/<роль>.<домен> -k hopedfs.keytab и импортируйте файл кнопкой «Импорт keytab» в разделе «Домен». После этого пользователи входят по Kerberos в шары (SMB) и экспорты NFS (krb5/krb5i/krb5p).
  4. Группы пользователя берутся из memberOf (включая вложенные), SID — из ipaNTSecurityIdentifier; в «Выборе пользователей» и на вкладке «Безопасность» видны имена вида IPA\ivanov.

Проверено на стенде из тех же компонентов, что использует FreeIPA (389 Directory Server со схемой FreeIPA и MIT Kerberos KDC): подключение с проверкой сертификата LDAPS, вход по Kerberos по SMB и NFS, проверка прав по группам FreeIPA, изменение ACL с клиента NFS. Перед вводом в эксплуатацию рекомендуем пробное подключение к вашему контроллеру ALD Pro.

13. Типовые проблемы

Симптом Причина и решение
«Нет доступа к \сервер» сразу порт 445 закрыт файрволом / занят Samba: ss -ltnp 'sport = :445'
Запрос пароля при входе доменным пользователем по имени сервера нет DNS-записи имени роли / расхождение часов / роль добавлена после подключения к домену (повторите)
Доменный пользователь не входит по IP (\\10.0.0.50\Шара) по IP Windows по умолчанию использует NTLM, а он для доменных учёток не поддерживается: включите на клиентах TryIPSPN и SPN по IP (раздел 11) или подключайтесь по имени роли
По имени не входит клиент получает билет Kerberos к неверному SPN: проверьте setspn -L ИМЯ$ и DNS
«сертификат контроллера выдан недоверенным центром» подтвердите сертификат контроллера в разделе «Домен» или установите корневой CA домена
«имя контроллера не найдено в сертификате» укажите контроллер по DNS-имени из SAN сертификата или подтвердите сам сертификат контроллера
«порт LDAPS 636 недоступен» на контроллере AD не установлен сертификат (LDAPS не работает без него) или 636/tcp закрыт файрволом
Пользователь не видит папки включён ABE и у пользователя нет права «Содержание папки»
Ошибка «Диск заполнен» при свободном месте достигнута квота шары
Права не сохраняются ФС шары не поддерживает user xattr (смонтируйте с user_xattr / используйте ext4/XFS)
Публикация: «контроллер не принимает вход учётки компьютера роли по LDAP» HopeDC: задайте служебную учётку («Домен») или выполните публикацию учёткой администратора
Публикация: «нет прав» при записи имени в DNS (MS AD) запись с этим именем создана другой учёткой (например, вручную) — удалите её в консоли DNS или нажмите «Учёткой администратора…»
DNS: «сервер ответил „успешно“, но запись не создал» ключ TSIG не подошёл (имя, алгоритм, секрет) или сервер не принимает такие записи без ключа
Сервер не виден в «Сети» Windows на клиенте выключено сетевое обнаружение (профиль «Общедоступная сеть») или закрыты 3702/udp и 5357/tcp; клиент в другой подсети — WS-Discovery работает в пределах сегмента
\\домен\Пространство не открывается MS AD: подождите до 15 минут или перезапустите службу DFS на контроллере; HopeDC: нужна версия с поддержкой доменных пространств; проверьте dfsutil /pktinfo на клиенте
Репликация: «неверная подпись участника» / «расхождение часов» часы серверов расходятся больше чем на 5 минут — настройте NTP на всех участниках
Репликация: «сертификат участника не совпадает с закреплённым» на участнике заменили сертификат панели; если это сделали вы — исключите участника и подключите заново, иначе проверьте, нет ли перехвата соединения
Репликация: «ожидают N изменений», «файл открыт» файл открыт пользователем на этом сервере — изменение применится после закрытия
Репликация: участник в состоянии «первичная синхронизация» / «партнёр ещё не готов» новый участник ждёт партнёра, завершившего свою первичную синхронизацию; проверьте связь по 7443/tcp
Пользователь внезапно не может сохранять файлы ни на одной шаре, читать может сработала защита от шифровальщиков — красный баннер в панели, раздел «Защита от шифровальщиков». Проверьте компьютер пользователя; при ложном срабатывании — «Ложное срабатывание» (снимает блокировку и добавляет учётку в исключения)
Защита от шифровальщиков срабатывает на систему резервного копирования она пишет на шару зашифрованные архивы без формата: добавьте её учётку или IP в исключения, расширения её файлов — в «Расширения со „случайным“ содержимым»
«Добавить» на вкладке «Безопасность»: «не удалось определить, присоединён ли компьютер к домену» старая версия HopeDFS без интерфейса DSSETUP — обновите сервер
Подключение к домену: «корень домена … не найден или недоступен учётке …» имя домена и учётка из разных доменов (контроллер с несколькими доменами): укажите учётку как user@домен
В панели нет новых разделов после обновления браузер показывает прежнюю версию — обновите страницу (Ctrl+F5)

14. Лицензия и редакции

Лицензирование устроено так же, как в HopeDC и Hope Mail Server: лицензия — ключ, подписанный сервером лицензий собственной парой ключей HopeDFS, публичный ключ вшит в программу. Лицензия привязана к узлу (отпечаток узла — идентификатор установки ОС machine-id) и хранится на нём (/var/lib/hopedfs/license.key). Условия использования — Лицензионное соглашение (раздел 20; карточка «Лицензионное соглашение» в этом же разделе).

Редакция Общие папки Объём данных Блокировка записи Репликация между площадками Отказоустойчивый кластер
Free (без лицензии) 3 50 ГБ при 62,5 ГБ — —
Standard 10 2 ТБ при 2,5 ТБ ✓ —
Enterprise без ограничений без ограничений — ✓ ✓

Остальные возможности (SMB, NTFS-разрешения, домен, снимки, DFS, квоты, NFS, МРД, публикация в сети, защита от шифровальщиков, роли с плавающим IP на одиночном сервере) доступны во всех редакциях. Окно «Сравнить редакции» — в разделе «Лицензия».

Получение лицензии. «Настройки» → «Лицензия»: скопируйте или скачайте запрос (.req с отпечатком узла) и передайте на сервер лицензий; полученный ключ (---BEGIN HOPE LICENSE KEY---) вставьте в «Ключ лицензии». Либо «Онлайн-активация» — узел сам обратится к серверу лицензий со своим отпечатком. Ключ проверяется сразу: подпись, отпечаток узла, продукт (HopeDFS), срок. Сервер лицензий может переопределить лимиты в самой лицензии (shares_limit, storage_limit_gb в ГиБ; 0 — без ограничений) и разрешить кластер в редакции ниже Enterprise (features: ["cluster"]), репликацию между площадками — в Free (features: ["dfsr"]).

Превышение лимитов. Существующие общие папки и доступ пользователей продолжают работать; нельзя только создавать новые общие папки (ни в панели, ни из Windows через «Управление компьютером»). Объём считается по всем общим папкам узла (без служебной папки снимков .hopedfs, вложенные папки и жёсткие ссылки — один раз). Полный обход общих папок выполняется при запуске службы, при добавлении шары и раз в 6 часов; между ними пересчитываются только папки, изменённые через HopeDFS (SMB, NFS, панель, репликация), — раз в 20 секунд. Поэтому большие шары (терабайты, миллионы файлов) не нагружают диск постоянными обходами. Файлы, записанные мимо HopeDFS (из консоли сервера), попадут в подсчёт при ближайшем полном обходе или после перезапуска службы.

Блокировка записи (+25%). Объём данных может превышать лимит редакции не более чем на 25%. При достижении порога (Free — 62,5 ГБ, Standard — 2,5 ТБ, при лимите из лицензии — лимит × 1,25) запись новых данных в общие папки блокируется: создание файлов и папок, дозапись и увеличение файлов (в т.ч. серверное копирование) получают «Недостаточно места на диске» (STATUS_DISK_FULL), Проводник показывает 0 байт свободно. Чтение, удаление, переименование, изменение разрешений и перезапись существующих данных без увеличения размера работают. Панель показывает красный баннер и шкалу «лимит → порог блокировки». Блокировка снимается автоматически, когда объём опускается ниже порога: занятый объём уточняется каждые 20 секунд (запись по SMB учитывается сразу). В журнале службы и аудите — события «⛔ … запись заблокирована» и «✅ … снова разрешена».

Окончание срока лицензии. Управление замораживается: все разделы панели доступны только для просмотра, кнопки изменений неактивны, API изменений и управление шарами/сеансами из Windows (srvsvc) отвечают отказом. Общие папки, доступ пользователей, NTFS-разрешения из Проводника, снимки по расписанию, кластер и репликация продолжают работать. Заморозка снимается сразу после применения действующей лицензии. Удаление лицензии возвращает узел в редакцию Free.

Кластер. Отказоустойчивый кластер — только в редакции Enterprise, и лицензия Enterprise нужна каждому узлу. Создать кластер, пригласить узел и присоединиться к кластеру можно только с действующей лицензией Enterprise (координатор дополнительно проверяет лицензию присоединяемого узла). Если у узла уже работающего кластера лицензия стала не Enterprise (удалена, заменена на Standard), кластер не разваливается — роли, переключение и репликация работают, — но панель показывает предупреждение, а приглашать новые узлы нельзя, пока на всех узлах не будет Enterprise. Роли с плавающим IP на одиночном сервере доступны во всех редакциях.

Как в HopeDC, лицензия не реплицируется: у каждого узла своя лицензия на свой отпечаток (выбор узла — вверху раздела «Лицензия»; таблица «Лицензии узлов кластера» показывает все узлы). Конфигурация общих папок в кластере общая, поэтому для неё действует самый строгий лимит среди лицензий живых узлов и наибольший занятый объём (так же — порог блокировки записи); сообщение об отказе называет узел, лицензия которого ограничивает кластер. Заморозка — по лицензии узла, к панели которого подключён администратор.

15. Репликация между площадками (как DFS-R)

Раздел «Отказоустойчивость» → «Репликация площадок». Это аналог службы DFS Replication Windows Server: одна и та же общая папка на серверах HopeDFS разных площадок (центральный офис, филиалы, резервная площадка) с одинаковым содержимым. Пользователи каждой площадки работают со своим сервером на скорости локальной сети, изменения расходятся между серверами. Доступно в редакциях Standard и Enterprise (лицензия нужна каждому участнику).

Как устроено

Одновременную работу с одним файлом на разных площадках DFS-R не согласует (нет блокировок между серверами) — это так и в Windows. Типовые сценарии: каждый филиал работает со своими документами, рассылка из центра в филиалы (участники «только чтение»), сбор данных филиалов в центр, резервная площадка.

Требования

Настройка

  1. На сервере с актуальными данными: «Создать группу» — имя группы, имя папки и общая папка этого сервера. Этот сервер — основной участник: его содержимое главное при первичной синхронизации.
  2. «Участник» → адрес сервера другой площадки (fs-spb.corp.local или IP; для кластера — адрес роли или любого узла), логин и пароль администратора того сервера. Учётные данные используются один раз, чтобы тот сервер дал согласие. Проверьте показанный отпечаток сертификата — он должен совпадать с отпечатком на странице «Репликация площадок» того сервера; после подключения он закрепляется.
  3. Выберите общую папку на подключаемом сервере для каждой папки группы, при необходимости — «только чтение».
  4. Начнётся первичная синхронизация нового участника: он получает содержимое партнёров. Его файлы, совпадающие с основным, остаются на месте без передачи; отличающиеся — переносятся в ConflictAndDeleted и заменяются версией группы; файлы, которых у группы нет, — переносятся в PreExisting (.hopedfs/dfsr/<папка>/PreExisting, с исходными путями). Как и в Windows, на новом участнике во время первичной синхронизации лучше не работать с файлами папки. Для больших объёмов заранее скопируйте данные (rsync/robocopy) — совпадающие файлы не передаются.
  5. При необходимости — «Опубликовать в DFS»: в пространстве имён этого сервера появится ссылка, целями которой будут копии папки на всех участниках.

Добавить папку в группу — «Папка» (общая папка этого сервера), затем «Общие папки участников» — сопоставление на остальных серверах (список их общих папок запрашивается у них).

Параметры группы

Параметр Что задаёт
Топология «Каждый с каждым» (по умолчанию) или «Звезда» — участники обмениваются только с концентраторами (центральный офис)
Расписание и полоса Недельная сетка по часам (местное время получателя): без ограничения, ограничение в Мбит/с или «нет репликации» — как расписание DFS-R
Фильтр файлов Не реплицируются (по умолчанию ~*;*.bak;*.tmp, как в Windows); также всегда — файлы с атрибутом «временный» и служебные файлы HopeDFS
Фильтр вложенных папок Имена папок, которые не реплицируются
Квота ConflictAndDeleted 660 МБ по умолчанию
Сведения об удалениях Хранятся 60 дней. Участник, не связывавшийся с партнёрами дольше, автоматически восстанавливает базу по партнёрам — устаревшие данные не разойдутся по группе
Сжатие Сжимать передаваемые данные (полезно в WAN, на быстрой ЛВС можно выключить)

Участник «только чтение» получает изменения, но клиенты не могут записывать в его папку по SMB и NFS, а изменения, сделанные на нём мимо HopeDFS, откатываются к версии группы (как read-only replicated folder в Windows). Его изменения другим участникам не передаются.

Состояние

У каждой папки: режим (первичная индексация, первичная синхронизация, восстановление базы, работает), объектов в базе версий, очередь локальных изменений, время последней сверки; по каждому партнёру — состояние («синхронно», «ожидают N изменений», «вне расписания», «ошибка» с текстом), отставание (сколько изменений партнёра ещё не получено), время последнего обмена, сколько получено и сколько сэкономлено передачей только изменённых частей. В журнале службы — события с префиксом 🔀.

Сайты

Вкладка «Сайты и подсети». Сайт клиента и серверов определяется по IP-адресу: подсети и связи сайтов читаются из Active Directory по LDAPS (раздел конфигурации, CN=Sites), а таблица, заданная вручную, дополняет и уточняет их (для FreeIPA/ALD Pro и рабочей группы — единственный источник). Связь сайтов имеет стоимость; для ссылок DFS цели упорядочиваются так: серверы сайта клиента, затем по наименьшей стоимости пути, цели одной стоимости — в случайном порядке (распределение нагрузки). Свой сайт каждый участник определяет сам и сообщает остальным.

Кластер как участник

Отказоустойчивый кластер подключается к группе как один участник. Репликацией папки занимается узел, обслуживающий роль её общей папки; при переносе роли репликация продолжается на новом узле (база версий лежит в папке шары и переезжает вместе с общим томом). Запросы партнёров, пришедшие на другой узел, пересылаются владельцу роли. Закрепляются сертификаты всех узлов кластера. Адрес участника — адрес роли (VIP) или DNS-имя; подойдёт и адрес любого узла.

Безопасность

Обмен — HTTPS с закреплёнными отпечатками сертификатов участников (подмена сервера не пройдёт) и подписью каждого запроса ключом группы (HMAC-SHA256, защита от повтора по времени). При исключении участника ключ группы меняется — исключённый сервер больше не может получать данные. Файлы на исключённом сервере и на всех участниках при удалении группы сохраняются.

Отличия от DFS-R Windows

16. Публикация в сети

Раздел «Публикация в сети»: как компьютеры находят сервер и его общие папки. Всё включается само после подключения к домену; панель показывает состояние по каждому имени и папке («Опубликовать сейчас» — повторить сразу). В кластере роль публикует узел, который её обслуживает (роль без плавающего IP — координатор); после переноса роли публикацию продолжает новый владелец.

Имена и DNS

Для каждой роли регистрируется запись A (AAAA) <роль>.<домен> → адрес роли (плавающий IP, у роли без VIP — адреса узла, а у сервера, установленного с BIND, — этот адрес). Для плавающего IP — и обратная запись PTR, если на сервере DNS есть зона обратного просмотра. Записи обновляются при смене адресов и имён и раз в 30 минут; записи удалённых ролей и псевдонимов удаляются.

Способ Когда Права
Записи зоны в каталоге AD (LDAPS) MS AD, Samba AD: зоны DNS, интегрированные в AD. Выбирается автоматически Учётка компьютера роли — как при динамической регистрации Windows-сервера (по умолчанию «Прошедшие проверку» могут создавать записи, создатель записи — её владелец). Сервер DNS контроллера применяет изменение каталога за ~3 минуты
Динамическое обновление DNS (RFC 2136) HopeDC, BIND, FreeIPA / ALD Pro — зоны не в каталоге. Сервер — контроллеры домена или заданный вручную Ключ TSIG (hmac-sha256/512, sha1, md5). HopeDC без ключа принимает только адресные записи и не даёт занять имя статической записи; ключ домена — в панели HopeDC: «DNS» → «Динамические обновления»

«Проверить сервер и ключ» находит зону и создаёт и сразу удаляет пробную запись — так видно, принят ли ключ (некоторые серверы на неподписанное обновление отвечают «успешно», ничего не меняя). Сервер не в домене — укажите зону и сервер DNS вручную.

Псевдонимы. «Псевдонимы» у роли — дополнительные имена сервера: например, имя старого Windows-сервера, чтобы пути \\FILES\Docs и ярлыки продолжили работать после переезда. Каждое имя: регистрируется в DNS (записью A с адресом роли — так его разрешает любой сервер и клиент), видно в «Сети», сервер отвечает на него как на своё имя. Для входа доменных пользователей по Kerberos нужны SPN псевдонима: после изменения — «Домен» → «Обновить SPN» (учёткой с правом записи servicePrincipalName).

Общие папки в Active Directory

В свойствах общей папки — «Опубликовать в Active Directory» и ключевые слова. В каталоге создаётся объект «Общая папка» (volume) с путём \\<роль>.<домен>\<папка>, описанием и ключевыми словами — по умолчанию под учётной записью компьютера роли, как публикует Windows («Управление компьютером» → «Общие папки» → «Опубликовать»), или в заданном подразделении. Пользователи находят папку через «Сеть» → «Поиск в Active Directory» → «Общие папки». Изменение описания, переименование и снятие с публикации применяются сами.

Права в MS AD: первую публикацию выполните кнопкой «Учёткой администратора…» — HopeDFS делегирует учётке компьютера роли создание и удаление общих папок в её контейнере, дальше всё делается без администратора. HopeDC не принимает LDAP-вход учёток компьютеров — с ним задайте служебную учётку в разделе «Домен» или публикуйте учёткой администратора. FreeIPA / ALD Pro объектов «Общая папка» не имеют.

Папка «Сеть» Windows

Сервер виден в папке «Сеть» Проводника — как компьютер Windows с включённым сетевым обнаружением (протокол WS-Discovery): каждая роль и каждый псевдоним — отдельным компьютером с именем домена или рабочей группы. Двойной щелчок открывает список общих папок. Нужно открыть 3702/udp (многоадресная рассылка) и 5357/tcp (install.sh открывает их сам). Обнаружение работает в пределах сегмента сети (подсети), как у Windows; клиенты в других подсетях находят сервер по DNS. Выключается переключателем на вкладке «"Сеть" Windows».

Доменные пространства DFS

См. раздел 7: \\домен\Пространство хранится в AD, клиентов к серверам пространства направляет контроллер домена.

17. Защита от шифровальщиков

Шифратор на заражённом компьютере портит не только локальные файлы, но и подключённые сетевые диски — то есть шары HopeDFS. Каждое его изменение проходит через сервер, поэтому HopeDFS распознаёт атаку и останавливает её, пока испорчены единицы файлов. Раздел «Безопасность» → «Защита от шифровальщиков». Работает во всех редакциях; включена по умолчанию (режим «Блокировать», средняя чувствительность).

Как распознаётся атака

Признак Что происходит
Файлы-ловушки В корне каждой шары — три скрытых файла (!!_Archive_2019.docx, ~~_backup_finance.xlsx, ЯЯ_Резерв_договоры.pdf). Их имена стоят в начале и в конце списка, шифраторы обходят папку по порядку и натыкаются на них первыми. Пользователь их не видит; любая попытка изменить, переименовать или удалить ловушку — атака
Сигнатуры Создание или переименование в файл с расширением известного шифратора (.locky, .wncry, .lockbit, *.id[…].[почта]… — около 100 шаблонов) или записка о выкупе (HOW_TO_DECRYPT.txt, _readme.txt, Restore-My-Files.txt…) — атака; файл не создаётся
Поведение Сервер смотрит первые 16 КБ каждого записанного файла. Был документ (сигнатура формата или обычный текст) — стал «шум» без формата с энтропией около 8 бит/байт; к имени дописано чужое расширение; появилась зашифрованная копия документа, а оригинал удалён; документ подменён временным файлом. Сжатые и мультимедийные файлы (zip, docx, jpg, mp4, 7z…) так не выглядят — у них есть сигнатура формата. Порог — за 2 минуты: высокая чувствительность — от 4 таких файлов, средняя — от 8, низкая — от 16

Реакция

Сохранность и восстановление

Включите расписание снапшотов у важных шар (свойства шары → «Предыдущие версии»): первые файлы атаки, испорченные до того, как источник стал подозрительным, восстанавливаются только из снапшота.

Что делать при инциденте

  1. Отключите компьютер-источник от сети, проверьте его антивирусом или переустановите систему.
  2. Смените пароль учётной записи.
  3. Инцидент → «Восстановление» → «Восстановить».
  4. «Разблокировать» и «Закрыть инцидент». «Ложное срабатывание» снимает блокировку и добавляет учётку в исключения.

Исключения и тонкая настройка

Служебные учётки и серверы резервного копирования, которые пишут на шары зашифрованные архивы, добавьте в исключения (учётные записи или IP-адреса). Расширения законно «случайных» файлов (gpg, hc, pfx, kdb…) не считаются признаком. Списки сигнатур редактируются; «По умолчанию» возвращает встроенные.

Проверка без риска: подключите шару тестовой учётной записью, включите показ скрытых файлов и переименуйте файл-ловушку — учётке запретится запись, появится инцидент. Затем «Разблокировать» и «Закрыть инцидент».

NFS

Защита действует и для клиентов NFS 4.0/4.1/4.2 — тот же анализ при закрытии файла, те же ловушки и сигнатуры, общая с SMB блокировка: источник, пойманный по SMB, не может писать и по NFS, и наоборот. Отличия: - Клиенты без Kerberos (sec=sys): номер пользователя сообщает сам клиент, сменить его ничего не стоит, поэтому при атаке блокируется и учётка, и компьютер (IP) — независимо от параметра «Кого блокировать». С Kerberos (krb5, krb5i, krb5p) пользователь проверен, блокировка — как для SMB. - Ловушки видны клиентам Linux (атрибута «скрытый» там нет). Изменение и переименование ловушки по NFS — атака; удаление — нет: его может сделать обычная очистка папки (rm, rsync --delete). Удалённые ловушки сервер восстанавливает сам. - Запрет записи источнику атаки по NFS — ошибка доступа (EACCES) на создание, запись, удаление, переименование и изменение атрибутов; чтение работает.

18. Роли и права панели

«Безопасность» → «Роли и права». Разграничение прав администраторов веб-панели: какие разделы видит пользователь и в каких может вносить изменения. Права проверяет сервер на каждом запросе API (в том числе перенаправленном в кластере другому узлу), интерфейс лишь скрывает недоступное.

Кто входит в панель. - Полный доступ без назначения — члены локальной группы Administrators сервера (в том числе через вложенные группы), Domain Admins, Enterprise Admins и групп администраторов из «Домен» → «Параметры подключения». Так было и до появления ролей — существующие установки работают без изменений. - По роли — любой локальный или доменный пользователь, которому (или группе которого) назначена роль. Остальным вход отклоняется: «у пользователя нет прав на панель HopeDFS».

Роли. Системные, не изменяются: | Роль | Права | |---|---| | Администратор | полный доступ ко всем разделам, включая «Роли и права» | | Аудитор | просмотр всех разделов, никаких изменений |

Свои роли — «Создать роль» (или «Создать копию» существующей): название, описание и матрица прав — повторяет меню панели, по каждому разделу две галочки: - Просмотр — раздел виден в меню, данные доступны для чтения; - Изменение — создание, правка, удаление в разделе (включает просмотр).

Галочка группы меню («Файловый сервер», «Безопасность», «Отказоустойчивость», «Настройки») отмечает все разделы внутри. «Обзор», «Журнал аудита» и «Журнал службы» — только просмотр. «Полный доступ (администратор)» равнозначен системной роли «Администратор».

Действия, не относящиеся к одному разделу: списки общих папок, узлов и ролей кластера, меток МРД и окно выбора пользователей и групп доступны любой роли (нужны в нескольких разделах). «Проверить связь» с доменом и проверка DNS в «Публикации» — действия просмотра.

Назначения — вкладка «Назначения» → «Назначить роль»: пользователи или группы (локальные и доменные, через окно выбора) и роль. У пользователя или группы одна роль; если пользователь получает роли из нескольких назначений (свою и групп), права складываются. Доменные группы пользователя берутся при входе, локальные — по текущему составу: изменение назначений и состава локальных групп действует на открытые сеансы сразу, без повторного входа. Удаление локальной учётки или группы снимает и её назначение.

Защита от расширения прав. Пользователь с ролью без полного доступа, которому выдано изменение «Ролей и прав» или «Локальных учёток», не может: - создать или изменить роль с правами, которых нет у него самого, выдать полный доступ; - назначить или снять роль шире своей; - менять учётки и группы, права которых в панели шире его прав: администраторов, членов Administrators, группы с назначенной широкой ролью, — менять им пароль, включать в Administrators, менять состав таких групп; - менять список групп администраторов в настройках домена.

Что видит пользователь с ролью. В меню — только разделы с правом просмотра; при входе открывается первый доступный. В разделе без права изменения в шапке — метка «Только просмотр», кнопки действий неактивны. Открытый по ссылке недоступный раздел — «Нет доступа к разделу». Под именем пользователя в меню — его роли.

Аудит. Создание, изменение и удаление ролей, назначение и снятие ролей пишутся в журнал аудита (в кластере — на координаторе, ?node=all в журнале показывает записи всех узлов); отказ во входе без прав — событие panel_login с отметкой «нет прав на панель».

Пример — оператор общих папок: «Общие папки» (изменение), «Сеансы и файлы» (изменение), «Предыдущие версии» (изменение), «Файлы и разрешения» (просмотр), «Обзор». Служба безопасности: «Журнал аудита», «Защита от шифровальщиков» (изменение), «Мандатный доступ» (изменение), «Сеансы и файлы» (просмотр).

19. Обновления

«Настройки» → «Обновления» (только администратор с полным доступом, как в HopeDC). Новые версии HopeDFS ставятся из панели — онлайн или из файла для закрытого контура. Из панели ставятся сборки 1.1.0 и новее; первая установка 1.1.0 — скриптом развёртывания.

Версия. Версия HopeDFS — номер сборки, как в HopeDC: v151, v152… (каждая новая сборка — следующий номер). Вверху — текущая версия, время сборки и архитектура, доступная версия и итог последней проверки. hopedfs --version на сервере показывает то же («HopeDFS 151 (сборка …)»). Сборки до v151 нумеровались 1.x.y (1.5.0 соответствует v150); любой номер сборки считается новее версии 1.x.y, поэтому узлы с прежней нумерацией обновляются из панели как обычно. Тот же номер показывают «Обзор», «Кластер» и «Репликация».

Онлайн-источник. Сервер обновлений (или внутренний веб-сервер организации) публикует манифест — JSON:

{
  "stable": { "version": "152", "url": "hopedfs_v152.gz", "sha256": "<sha256 файла .gz>", "notes": "Что нового" },
  "beta":   { "version": "153-beta", "url": "...", "sha256": "...", "notes": "..." }
}

version — номер сборки (можно с v: v152). Можно без каналов — один объект {version, url, sha256, notes}; относительная ссылка считается от адреса манифеста. Без sha256 пакет не устанавливается; скачанный пакет с другой суммой отклоняется (повреждён или подменён). Канал (stable/beta), адрес и автопроверка (раз в сутки, о новой версии — запись в журнале службы) общие для всех узлов кластера. Используйте HTTPS; http — только во внутренней доверенной сети.

Из архива (закрытый контур). Загрузите hopedfs.gz из комплекта поставки (или распакованный бинарник): пакет распаковывается и проверяется — исполняемый файл Linux нужной архитектуры, пробный запуск --version от непривилегированного пользователя (nobody), версия не ниже 1.1.0; показываются версия и SHA-256 файла — сверьте её с контрольной суммой поставщика (hopedfs.gz.sha256). Поле «Версия» необязательно: если указать, пакет с другой версией будет отклонён.

Установка («Установить v152», подтверждение): 1. служба проверяет пакет ещё раз и передаёт его установщику — прежнему бинарнику, запущенному отдельной временной службой systemd (systemd-run), чтобы перезапуск HopeDFS его не остановил; 2. установщик сверяет SHA-256, сохраняет текущий бинарник как /opt/hopedfs/hopedfs.prev, ставит новый и перезапускает службу; 3. ждёт до 90 секунд, пока панель ответит новой версией; иначе возвращает прежний бинарник и перезапускает службу — «Откат выполнен», причина — journalctl -u hopedfs.

Ход установки (загрузка, проверка, замена бинарника, перезапуск) виден на странице; во время перезапуска панель узла несколько секунд недоступна, подключения SMB/NFS переподключаются сами. Журнал установщика — journalctl -t hopedfs-update. Конфигурация, учётки, лицензия и данные не затрагиваются. Запуск установки и её итог (установлено / не установлено с причиной), загрузка и удаление пакета, смена источника — в журнале аудита.

Кластер. Список узлов с их версиями; узлы обновляются по одному — выберите узел вверху страницы (действия выполняются на нём). Перед обновлением узла, обслуживающего роли, приостановите его в «Кластере», чтобы роли переехали заранее. Разные версии на узлах допустимы на время поэтапного обновления.

Требования. Сервер под управлением systemd (systemd-run, systemctl) — как при установке install.sh; иначе раздел предложит обновить скриптом развёртывания. При истёкшей лицензии раздел работает.

20. Лицензионное соглашение (EULA)

Использование HopeDFS регулируется Лицензионным соглашением с конечным пользователем — договором присоединения (ст. 428, п. 5 ст. 1286 ГК РФ). Текст на русском языке встроен в программу; он же — документ 8 «Лицензионное соглашение» (Лицензионное соглашение).

Где посмотреть текст: - страница https://<сервер>:7443/eula — без входа (ссылка на странице входа «Используя HopeDFS, вы принимаете условия Лицензионного соглашения»), с кнопкой печати; - раздел «Лицензия» → карточка «Лицензионное соглашение» → «Открыть соглашение»; - на сервере: hopedfs --eula (текст без разметки, редакция и SHA‑256) и файл /opt/hopedfs/EULA.txt (кладёт install.sh, обновляет сама служба после обновления из панели).

Принятие. При первом входе в панель (и после выхода новой редакции соглашения) вместо разделов показывается окно с текстом соглашения и галочкой «Я прочитал(а) Лицензионное соглашение, принимаю его условия от имени организации… и подтверждаю свои полномочия»: - «Принимаю» — доступно только полному администратору панели (члены Administrators, группы администраторов домена, роль «Администратор»); пользователи с ограниченной ролью видят «Соглашение должен принять полный администратор панели» и кнопку «Выйти»; - «Не принимаю» — выход из панели.

Фиксируются редакция и SHA‑256 текста, учётная запись, IP‑адрес, браузер (User‑Agent), время, имя узла и версия HopeDFS — в /var/lib/hopedfs/eula_acceptance.json (права 0600) и в журнале аудита (событие eula). Сведения видны в разделе «Лицензия». Каждый узел кластера хранит свою запись — соглашение принимается на каждом узле, в панель которого входят администраторы.

До принятия: API панели отвечает 428 (code: "eula_required") — кроме входа, сведений о сеансе и самого соглашения. Службы от принятия не зависят: SMB, NFS, кластер, репликация между площадками, межсерверные обращения (в том числе настройка репликации с другого сервера) работают всегда.

Английский интерфейс показывает русский текст с пометкой, что юридически действует русский текст (п. 20.6).

Для автоматизированных стендов принятие можно задать переменной окружения HOPEDFS_EULA_ACCEPTED=1 (в разделе «Лицензия» будет отмечено, что запись о принятии отсутствует). В рабочей установке не используйте.

Компоненты третьих лиц — отдельный документ 9: перечень компонентов с открытым исходным кодом, их правообладателей и тексты лицензий. В программу не встраивается; входит в комплект документации и предоставляется по запросу (Лицензионное соглашение, п. 11.1).

21. Путеводитель: «Начало работы» и подсказки

В панель встроен путеводитель, который ведёт оператора с первого входа (как в HopeDC). У него две части.

1. «Начало работы» — чек-лист первичной настройки сервера. Кнопка «Начало работы N/M» — в шапке панели; N/M — сколько обязательных пунктов выполнено. При первом входе полного администратора (после принятия Лицензионного соглашения) чек-лист открывается сам. Каждый пункт объясняет, зачем он нужен и когда считается выполненным; «Перейти» открывает нужный раздел.

Пункт Когда считается выполненным
Пароль администратора Пароль Administrator сменён после установки или файла /var/lib/hopedfs/initial_admin_password.txt нет
Пользователи Сервер в домене (AD, HopeDC, Samba AD, FreeIPA / ALD Pro) или заведён хотя бы один локальный пользователь кроме встроенных
Общая папка Создана хотя бы одна общая папка
Предыдущие версии Хотя бы у одной шары включено расписание снимков
Защита от шифровальщиков Режим «Блокировать» или «Только оповещать» (по умолчанию выполнено)
Время (NTP) Системные часы синхронизированы (флаг ядра, как timedatectl: «System clock synchronized: yes»)
Имя сервера в сети В домене — все имена ролей зарегистрированы в DNS без ошибок; вне домена — включена видимость в «Сети» Windows
Почта и уведомления (необязательно) Настроен сервер исходящей почты, уведомления включены хотя бы одному получателю
Доступ к панели (необязательно) Назначена хотя бы одна роль панели
Пространство DFS (необязательно) Создано пространство имён DFS
Репликация площадок (необязательно) Создана группа репликации
Лицензия (необязательно) Установлена действующая лицензия
Кластер (необязательно) В кластере больше одного узла

Состояние пунктов определяется по настройкам при каждом открытии — отмечать вручную ничего не нужно. Если пункт сделан иначе, чем проверяет панель (например, время синхронизирует аппаратный источник), полный администратор нажимает «Отметить»; отметка общая для узла, снимается кнопкой «Снять отметку» и пишется в журнал аудита. Чек-лист виден только полному администратору панели.

2. Подсказки по страницам. При первом открытии раздела панель подсвечивает его ключевые элементы и в карточке объясняет, что с ними делать. Управление: «Далее» / «Назад» (или стрелки ← →), «Пропустить» или Esc — закрыть подсказку этой страницы, «Не показывать подсказки» — выключить их для своей учётной записи. Кнопка «?» в шапке в любой момент повторяет подсказку текущей страницы; повторить все подсказки заново — ссылка «Повторить подсказки по страницам» внизу чек-листа. Подсказки показываются всем пользователям панели, но только в разделах, разрешённых их ролью.

Прогресс (пройденные подсказки, выключены ли они, открывался ли чек-лист) хранится на узле отдельно для каждой учётной записи (по SID) — в файле onboarding.json каталога данных (права 0600). На другом компьютере или в другом браузере подсказки повторно не показываются, у нового оператора начинаются сначала. В кластере прогресс у каждого узла свой.

API. GET /api/onboarding — состояние путеводителя текущей учётки (и чек-лист — для полного администратора). POST /api/onboarding с полем action: tour_done (+id), tours_reset, tours_off, tours_on, checklist_seen, mark (+id, done; только полный администратор). Доступно любому вошедшему пользователю панели, в том числе при замороженном управлении (истёкшая лицензия).

22. Почта, уведомления и восстановление доступа

Сервер исходящей почты

Раздел «Настройки → Почта и уведомления». HopeDFS не принимает почту — он отправляет письма через сервер почты организации (Exchange, Hope Mail Server, Postfix и т. п.):

Поле Значение
Сервер, порт имя или IP сервера почты; порт по умолчанию — по способу шифрования
Шифрование STARTTLS (587, рекомендуется), TLS (465) или без шифрования (25 — только для доверенного ретранслятора во внутренней сети)
Пользователь, пароль учётка для входа на сервер почты (AUTH); пусто — без входа. Пароль хранится в конфигурации сервера (/var/lib/hopedfs, доступ только root) и в панель не возвращается
Адрес и имя отправителя например, hopedfs@company.ru, «HopeDFS»
Адрес панели в письмах для ссылок сброса пароля — имя, которое открывается у пользователей (в кластере — имя или IP роли). Пусто — https://<IP узла>:7443
Сертификат сервера почты доверенный сертификат ЦС (PEM), если сертификат сервера почты выдан внутренним ЦС; корневые ЦС Mozilla и системные сертификаты Linux доверены всегда. «Не проверять сертификат» — только для проверки

«Отправить тестовое письмо» отправляет письмо с параметрами, введёнными в форме, — их можно проверить до сохранения. Ошибка показывается понятным текстом: сервер не отвечает, отклонил вход, сертификат не прошёл проверку, сервер не предлагает вход на этом подключении. Исходящие соединения — к серверу почты по выбранному порту (587, 465 или 25).

Уведомления

Включите «Отправлять уведомления по почте», укажите получателей (по одному адресу в строке или через запятую, до 50) и отметьте галочками, о чём сообщать:

Группа Событие Когда приходит письмо
Безопасность Атака шифровальщика обнаружена атака: источник (учётка и компьютер), шара, признак, реакция
Восстановление доступа к панели запрошена ссылка сброса пароля; пароль сменён по ссылке или аварийным токеном
Хранилище Квоты общих папок шара заполнила 90% и 100% квоты
Мало места на диске на томе общей папки свободно меньше 10%; и когда снова больше 15%
Ошибка снимка по расписанию снимок «Предыдущих версий» по расписанию не создан
Лицензия Блокировка записи по лимиту лицензии объём данных достиг порога (+25%) — запись остановлена; и когда снова разрешена
Срок лицензии за 30, 7 и 1 день до окончания срока лицензии узла и в день окончания
Кластер и репликация Узлы и роли кластера узел недоступен / снова в работе (письмо отправляет координатор); роль перешла на другой узел
Репликация площадок нет обмена с сервером другой площадки больше часа; и когда обмен восстановился
Обслуживание Доступна новая версия автопроверка обновлений нашла новую версию (по умолчанию выключено)
Установка обновления обновление установлено или не установлено (откат)

Письма уходят сразу при событии, в фоне. Состояния (место, квоты, срок лицензии, обмен репликации) проверяются раз в 5 минут; письмо приходит при переходе через порог и при возврате в норму, а не каждые 5 минут — отметки хранятся в /var/lib/hopedfs/notify_state.json и переживают перезапуск службы. Не больше 20 писем в час по одному событию. Каждый узел кластера сообщает о своих событиях; тема письма начинается с [HopeDFS <узел>]. «Проверить» отправляет получателям письмо со списком выбранных событий. «Журнал отправки» показывает последние письма и ошибки (/var/lib/hopedfs/notify_log.json, 100 записей).

Восстановление доступа к панели

На странице входа — ссылка «Забыли пароль?» (как в HopeDC). Два способа:

Каждый запрос, смена пароля и отклонённый токен пишутся в журнал аудита (событие password_reset) и, если включено, приходят уведомлением. Не больше 10 попыток каждого действия за 15 минут с одного адреса. Сброс из консоли сервера по-прежнему доступен: hopedfs set-password Administrator '…'.

Формат аварийного токена (для сервера лицензий): RS256-JWT, ключ — тот же, что у лицензий HopeDFS; утверждения sub — отпечаток узла, purpose — admin-recovery, product — HopeDFS, iss — HOPE-LICENSE-SERVER, exp — срок, new_password — новый пароль (не короче 8 символов), user — учётка (необязательно, по умолчанию Administrator), jti — идентификатор для однократного применения.

API. Без входа: POST /api/auth/recover-request (identifier), GET /api/auth/recover-check?token=, POST /api/auth/recover-reset (token, password), GET /api/auth/recovery-request (код запроса), POST /api/auth/recover-emergency (token). С правом раздела «Почта и уведомления»: GET /api/mail, PUT /api/mail/smtp, PUT /api/mail/notify, POST /api/mail/test, POST /api/mail/test-notify.

23. Тема оформления и язык панели

В шапке панели рядом с переключателем языка RU / EN — переключатель темы из трёх кнопок: ☀ светлая, ☾ тёмная, 🖥 как в системе (тема следует за настройкой операционной системы и меняется вместе с ней). Те же переключатели есть на страницах входа и восстановления доступа.

Тема и язык — личные настройки учётной записи. Выбор сохраняется на сервере — в конфигурации кластера по SID учётки (поле user_prefs), поэтому действует на любом узле кластера и с любого устройства. При входе панель один раз применяет настройки учётки: тема не выбиралась — светлая (а не тема предыдущего пользователя этого браузера); язык не выбирался — запоминается тот, с которым выполнен вход. На общем компьютере каждый пользователь видит свою тему и свой язык. Менять свои настройки может любая учётка с доступом к панели, в том числе с ролью «только просмотр» и при истёкшей лицензии. При удалении локальной учётки её настройки удаляются.

Тема переключается без перезагрузки страницы с плавным переходом; при открытии панели нужная тема ставится до первой отрисовки, без вспышки светлого экрана. Последний выбор хранится и в браузере (localStorage) — для быстрого старта и для страницы входа. Печать всегда выполняется в светлых цветах.

API. POST /api/auth/prefs — {"theme": "light|dark|system", "lang": "ru|en"} (любое из полей), ответ — действующие настройки учётки. Настройки также приходят в ответе на вход (/api/auth/login, поле prefs) и в /api/auth/me. В кластере запрос выполняет координатор (как любое изменение конфигурации).