Перейти к содержанию

Настройка целевого сервера Linux

Sambryx обращается к серверу по SSH от имени специального пользователя, которому выданы права sudo.


1. Установка Samba

На целевом Linux сервере (Ubuntu / Debian):

sudo apt update
sudo apt install -y samba
Пакеты winbind и krb5-user относятся к доменному сценарию. Для базового управления локальным Samba-сервером они не обязательны. Реальная интеграция AD ещё проверяется в #64.

Для очистки резервных копий на SSH-сервере нужны Bash, GNU findutils (find, xargs) и GNU coreutils (mktemp, sort, tail, cut, rm) с поддержкой NUL-разделителей. Они входят в обычную установку поддерживаемых Debian/Ubuntu-систем; минимальные образы следует проверить отдельно. Совместимость с Astra Linux не подтверждена; проверка отслеживается в #10. Перечисление и временный список выполняются от имени SSH-пользователя: ему нужны чтение каталога резервных копий и доступный временный каталог. Через sudo выполняется только удаление отобранных копий.

2. Создание пользователя samba-admin

Создайте сервисного системного пользователя с паролем:

sudo useradd -m -s /bin/bash samba-admin
sudo passwd samba-admin

SSH-пользователю не требуется учётная запись Samba для входа в панель. sudo smbpasswd -a samba-admin нужен только если этот пользователь также должен подключаться к файловым ресурсам по SMB. SSH-пароль и Samba-пароль — разные реквизиты.

3. Настройка sudoers

Добавьте права для samba-admin на выполнение требуемых команд без ввода пароля sudo:

sudo visudo -f /etc/sudoers.d/sambryx

Ниже широкий пример разрешений для полного набора операций, а не минимальный production-профиль. Неограниченные аргументы tee, cp, chmod, chown и других команд позволяют менять произвольные системные файлы с повышенными правами. Перед использованием согласуйте набор команд, путей и аргументов с администратором сервера; ограничение операций и аудит sudo policy остаются отдельной задачей.

Пример записывается в одну строку:

samba-admin ALL=(ALL) NOPASSWD: /usr/sbin/useradd, /sbin/useradd, /usr/sbin/userdel, /sbin/userdel, /usr/sbin/chpasswd, /usr/bin/chpasswd, /usr/sbin/groupadd, /sbin/groupadd, /usr/sbin/groupdel, /sbin/groupdel, /usr/bin/gpasswd, /usr/bin/smbpasswd, /usr/bin/pdbedit, /bin/systemctl, /usr/bin/systemctl, /bin/cat, /usr/bin/cat, /bin/mv, /usr/bin/mv, /bin/cp, /usr/bin/cp, /bin/rm, /usr/bin/rm, /bin/mkdir, /usr/bin/mkdir, /bin/chmod, /usr/bin/chmod, /bin/chown, /usr/bin/chown, /usr/bin/smbstatus, /usr/bin/du, /usr/bin/df, /usr/bin/find, /usr/bin/tail, /bin/kill, /usr/bin/kill, /usr/bin/net, /usr/bin/tee, /usr/bin/testparm, /usr/bin/mktemp, /usr/bin/ln
(Примечание: Список команд расширен для поддержки новых функций: мониторинг логов (tail), дискового пространства (du, df), проверка конфигурации (testparm) и ввод в домен AD (net, tee))

Защитите файл прав:

sudo chmod 0440 /etc/sudoers.d/sambryx

Права для резервных копий

Создание копии использует обычный Bash под SSH-пользователем и отдельные вызовы sudo -n mktemp, sudo -n cp, sudo -n ln, sudo -n rm. Создание каталога использует sudo mkdir. Права на запуск sudo bash, sudo sh или sudo ALL для этой операции не требуются. -n запрещает интерактивное ожидание пароля.

Для существующей установки администратору нужно согласовать разрешения mktemp и ln в дополнение к уже используемым файловым командам. Проверяйте реальные абсолютные пути утилит и доступ к настроенному каталогу backup; сам каталог не следует делать доступным для записи посторонним пользователям. Пример выше разрешает команды без ограничения аргументов и не является минимальным профилем безопасности.

Setup-скрипт включает эти команды для новых стендов. Не запускайте весь setup-скрипт на рабочем сервере только ради обновления sudoers: он также устанавливает пакеты. Исправленный backend и policy должны применяться совместно; существующие контейнеры и sudoers автоматически не обновляются.

Проверка готовности после входа

На странице Обзор нажмите Проверить готовность. Успешный вход по SSH сам по себе не подтверждает готовность Samba. Отчёт запускается вручную, отдельно от показателей Dashboard; автоматического периодического запуска нет. Повторная проверка очищает предыдущие результаты.

В текущий ограниченный этап входят четыре read-only проверки:

  • наличие sudo, testparm, pdbedit и cat в PATH SSH-пользователя через command -v;
  • чтение файла из SAMBA_PATHS_CONFIG (samba.paths.config, по умолчанию /etc/samba/smb.conf) через sudo -n cat без возврата содержимого;
  • принятие этого файла командой testparm -s от имени SSH-пользователя;
  • выполнение sudo -n pdbedit -L без возврата списка пользователей. Эта команда использует стандартную конфигурацию pdbedit; совпадение её базы с нестандартным SAMBA_PATHS_CONFIG не подтверждается.

Каждая проверка показывает подтверждение, отказ выполнения либо невозможность установить состояние, объяснение и следующее действие. Ненулевой exit code подтверждает отказ проверки, но не позволяет однозначно отличить отсутствие команды, запрет sudo, нечитаемый файл или неверную конфигурацию. При SSH-ошибке/timeout остальные удалённые проверки не запускаются и помечаются как неизвестные. Отсутствующий объект результата или exit status не считается успехом. Сырой stdout/stderr и пути в отчёт не включаются.

Выполняется не более четырёх последовательных SSH-команд. Их stdout/stderr перенаправлены в /dev/null на сервере; используется существующий samba.ssh.command-timeout (по умолчанию 30 секунд на команду) и connect timeout. После транспортного отказа дальнейших команд нет. sudo -n не запрашивает интерактивный пароль; существующая sudo policy не меняется. Успех относится к конкретному вызову сейчас: он не доказывает постоянный NOPASSWD-доступ или право выполнять другие команды. При ограничении команд на SSH-сервере эти read-only вызовы могут быть отклонены — диагностика не обходит такие ограничения и не требует выдавать ей новые права.

Административные изменения всегда остаются не проверены, поэтому полная готовность в этом этапе никогда не объявляется (ready=false в GET /api/monitoring/readiness). Даже все успешные проверки чтения не доказывают права на запись конфигурации, backup, создание пользователей, изменение прав или управление службами. sudo -n true не используется. Наличие утилит в PATH не гарантирует их доступность в sudo environment или совместимость версий. Проверка не подтверждает загруженную работающей Samba конфигурацию, SMB-доступ клиента, состояние AD, доступность каталога backup или поддержку всех необходимых GNU/Bash-возможностей. Эти условия администратор проверяет отдельно согласно нужным операциям и действующей policy.

Диагностика не записывает конфигурацию и backup, не создаёт пользователей, не меняет права и не запускает/останавливает службы. Политика SSH host keys и security filters сохраняется.