From c88b0bb4288dcf31fd071b79d1693a15c468e3a0 Mon Sep 17 00:00:00 2001 From: zuevav Date: Thu, 24 Sep 2026 12:35:40 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B0:=20bj-server=20=D1=81=D0=B0=D0=BC=20=D1=81=D0=BE?= =?UTF-8?q?=D0=B7=D0=B4=D0=B0=D1=91=D1=82=20/run/bj=20(=D0=B1=D0=B5=D0=B7?= =?UTF-8?q?=20bj-crypto=20=D1=81=D0=BB=D1=83=D0=B6=D0=B1=D0=B0=20=D0=BF?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D0=BB=D0=B0=20=D1=81=20226/NAMESPACE);=20?= =?UTF-8?q?=D1=88=D0=B0=D0=B3=20=D0=BB=D0=B8=D1=86=D0=B5=D0=BD=D0=B7=D0=B8?= =?UTF-8?q?=D0=B8=20=D0=BD=D0=B5=20=D0=BF=D0=BE=D0=BA=D0=B0=D0=B7=D1=8B?= =?UTF-8?q?=D0=B2=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20=D0=BF=D1=80=D0=B8=20?= =?UTF-8?q?=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D0=B5=20=D1=81?= =?UTF-8?q?=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B7=D0=B0;=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D1=87=D0=B8=D0=BD=D0=B0=20=D0=BF=D1=80=D0=B8=20=D1=81=D0=B1?= =?UTF-8?q?=D0=BE=D0=B5=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B0;=20De?= =?UTF-8?q?bian=20=E2=80=94=20=D0=BE=D0=B4=D0=B8=D0=BD=20=D0=B0=D0=B4?= =?UTF-8?q?=D0=BC=D0=B8=D0=BD=D0=B8=D1=81=D1=82=D1=80=D0=B0=D1=82=D0=BE?= =?UTF-8?q?=D1=80=20=D1=81=20sudo,=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BD=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D1=91=D1=82=D1=81=D1=8F=20=D1=8F=D0=B2?= =?UTF-8?q?=D0=BD=D0=BE;=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BD=20=D0=BD=D0=B0?= =?UTF-8?q?=20=D1=8D=D0=BA=D1=80=D0=B0=D0=BD=D0=B5=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=B2=D0=B5=D1=82=D1=81=D1=82=D0=B2=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- cmd/bj-installer/main.go | 5 ++++- deploy/iso/preseed.cfg | 7 +++---- deploy/linux/sbin/bj-welcome | 3 ++- deploy/systemd/bj-crypto.service | 1 + deploy/systemd/bj-server.service | 4 ++++ 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/cmd/bj-installer/main.go b/cmd/bj-installer/main.go index aea1f55..aaa9244 100644 --- a/cmd/bj-installer/main.go +++ b/cmd/bj-installer/main.go @@ -154,6 +154,8 @@ func (in *installer) run() error { var todo []step for _, s := range all { switch { + case s.id == "license" && strings.TrimSpace(in.code) == "" && in.bundle != "": + // ключ продукта вводится в браузере на первой странице — шаг здесь не нужен case in.dryRun && s.id != "precheck": case in.steps != nil && !in.steps[s.id]: default: @@ -721,7 +723,8 @@ func (in *installer) stepFirstRun() (string, error) { } for _, unit := range units { if out, err := run("systemctl", "restart", unit); err != nil { - return "", fmt.Errorf("запуск %s: %v %s", unit, err, out) + st, _ := run("systemctl", "status", unit, "--no-pager", "-n", "15") + return "", fmt.Errorf("запуск %s: %v %s\n%s", unit, err, out, st) } } if err := waitFor(90*time.Second, func() bool { diff --git a/deploy/iso/preseed.cfg b/deploy/iso/preseed.cfg index eec1a3e..0f2729e 100644 --- a/deploy/iso/preseed.cfg +++ b/deploy/iso/preseed.cfg @@ -35,11 +35,10 @@ d-i apt-setup/cdrom/set-first boolean false d-i apt-setup/non-free-firmware boolean true d-i apt-setup/services-select multiselect security, updates -# Учётные записи: пароль root и администратор ОС задаются при установке -d-i passwd/root-login boolean true +# Учётная запись: одна — администратор ОС с sudo (вход root отключён). Установщик спросит +# полное имя, ЛОГИН и пароль — логин человек видит и задаёт сам; им же входят в консоль сервера. +d-i passwd/root-login boolean false d-i passwd/make-user boolean true -d-i passwd/user-fullname string Администратор -d-i passwd/username string bjadmin # Разметка: весь выбранный диск, одна файловая система; диск и стирание подтверждаются при установке d-i partman-auto/method string regular diff --git a/deploy/linux/sbin/bj-welcome b/deploy/linux/sbin/bj-welcome index 0b30e8b..01c3085 100755 --- a/deploy/linux/sbin/bj-welcome +++ b/deploy/linux/sbin/bj-welcome @@ -54,7 +54,8 @@ fi *) printf ' Лицензия НЕ АКТИВИРОВАНА: введите ключ продукта в «Настройка → Лицензия».\n';; esac fi - printf '\n Вход в консоль сервера — учётной записью ОС (для обслуживания). Веб-вход — по адресу выше.\n\n' + ADM=$(getent group sudo | cut -d: -f4 | tr ',' ' ') + printf '\n Вход в консоль сервера (обслуживание): логин администратора ОС%s и его пароль,\n заданные при установке Debian; команды — через sudo. Веб-вход — по адресу выше.\n\n' "${ADM:+ ($ADM)}" } > "$ISSUE.tmp" if ! cmp -s "$ISSUE.tmp" "$ISSUE" 2>/dev/null; then mv -f "$ISSUE.tmp" "$ISSUE" diff --git a/deploy/systemd/bj-crypto.service b/deploy/systemd/bj-crypto.service index 31e50ce..4b6b93f 100644 --- a/deploy/systemd/bj-crypto.service +++ b/deploy/systemd/bj-crypto.service @@ -11,6 +11,7 @@ User=bj Group=bj RuntimeDirectory=bj RuntimeDirectoryMode=0750 +RuntimeDirectoryPreserve=yes Environment=BJ_CRYPTO_SOCKET=/run/bj/crypto.sock Environment=BJ_CRYPTO_PROVIDER=validata Environment=LD_LIBRARY_PATH=/opt/Validata/VDCSP/lib/amd64 diff --git a/deploy/systemd/bj-server.service b/deploy/systemd/bj-server.service index f7715cc..71f55b4 100644 --- a/deploy/systemd/bj-server.service +++ b/deploy/systemd/bj-server.service @@ -31,6 +31,10 @@ NoNewPrivileges=true ProtectSystem=strict ProtectHome=true PrivateTmp=true +# /run/bj — общий каталог с bj-crypto (сокет); на чистой установке его создаёт сама служба +RuntimeDirectory=bj +RuntimeDirectoryMode=0750 +RuntimeDirectoryPreserve=yes ReadWritePaths=/var/lib/bj /var/log/bj /run/bj StandardOutput=append:/var/log/bj/bj-server.log StandardError=append:/var/log/bj/bj-server.err