From 7161ef6fe8c8632f86be4c56c456c8ee681c8dd0 Mon Sep 17 00:00:00 2001 From: maxdmitrov <56165502+maxdmitrov@users.noreply.github.com> Date: Mon, 5 Oct 2026 16:01:52 +0300 Subject: [PATCH] =?UTF-8?q?systemd=20=D1=81=D1=82=D0=B0=D1=80=D1=88=D0=B5?= =?UTF-8?q?=20247:=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D1=89?= =?UTF-8?q?=D0=B8=D0=BA=20=D0=BE=D1=81=D1=82=D0=B0=D0=BD=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B8=D0=B2=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20=D1=81=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BD=D1=8F=D1=82=D0=BD=D1=8B=D0=BC=20=D1=81=D0=BE=D0=BE?= =?UTF-8?q?=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC=20(kit-sub=20=D0=B1?= =?UTF-8?q?=D0=B5=D0=B7=20root=20=D1=82=D1=80=D0=B5=D0=B1=D1=83=D0=B5?= =?UTF-8?q?=D1=82=20LoadCredential),=20kit=20update=20=D0=BD=D0=B5=20?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=B3=D0=B0=D0=B5=D1=82=20=D1=8E=D0=BD=D0=B8?= =?UTF-8?q?=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/3x-ui.sh | 4 ++++ scripts/kit.sh | 11 +++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/scripts/3x-ui.sh b/scripts/3x-ui.sh index 1143786..877c31f 100755 --- a/scripts/3x-ui.sh +++ b/scripts/3x-ui.sh @@ -372,6 +372,10 @@ main() { set -- ${args[@]+"${args[@]}"} [[ $EUID -eq 0 ]] || die "Запустите от root: sudo -i, затем команду ещё раз." command -v systemctl >/dev/null || die "Нужен systemd." + # kit-sub работает без root и получает конфиг через LoadCredential: он появился в systemd 247 (Ubuntu 22.04+, Debian 11+). + local sysv + sysv=$(systemctl --version 2>/dev/null | awk 'NR == 1 {print $2}') + [[ $sysv =~ ^[0-9]+$ ]] && ((sysv < 247)) && die "Версия systemd ($sysv) слишком старая, нужна 247 и новее: Ubuntu 22.04 и новее, Debian 11 и новее. На этой системе подписка не запустится – поставьте поддерживаемую." if [[ -f $RESULT && -x /usr/local/x-ui/x-ui ]]; then die "3X-UI уже установлена этим скриптом. Управление: команда x-ui, данные для входа: cat $RESULT" fi diff --git a/scripts/kit.sh b/scripts/kit.sh index bdbef76..cd7fa54 100644 --- a/scripts/kit.sh +++ b/scripts/kit.sh @@ -625,8 +625,15 @@ cmd_update() { # С 1.1 kit-sub работает без root: переписываем юнит под DynamicUser и LoadCredential. local c k c=$(jq -r '.cert // empty' /etc/kit-sub/config.json); k=$(jq -r '.key // empty' /etc/kit-sub/config.json) - kit_sub_unit "$c" "$k" >/etc/systemd/system/kit-sub.service - [[ -n $c ]] && echo '19 4 * * * root systemctl restart kit-sub >/dev/null 2>&1' >/etc/cron.d/kit-sub-cert + local sysv + sysv=$(systemctl --version 2>/dev/null | awk 'NR == 1 {print $2}') + if [[ $sysv =~ ^[0-9]+$ ]] && ((sysv < 247)); then + # LoadCredential появился в systemd 247: на более старой юнит без root не запустится, оставляем прежний. + warn "systemd $sysv старше 247: юнит kit-sub не меняю (подписка работает как раньше). Лучше перейти на Ubuntu 22.04+ или Debian 11+." + else + kit_sub_unit "$c" "$k" >/etc/systemd/system/kit-sub.service + [[ -n $c ]] && echo '19 4 * * * root systemctl restart kit-sub >/dev/null 2>&1' >/etc/cron.d/kit-sub-cert + fi systemctl daemon-reload if systemctl restart kit-sub && sleep 2 && sub_ok; then say "Подписка kit-sub обновлена и отвечает"