systemd старше 247: установщик останавливается с понятным сообщением (kit-sub без root требует LoadCredential), kit update не трогает юнит

This commit is contained in:
maxdmitrov
2026-10-05 16:01:52 +03:00
parent 21c3ac18c2
commit 7161ef6fe8
2 changed files with 13 additions and 2 deletions
+4
View File
@@ -372,6 +372,10 @@ main() {
set -- ${args[@]+"${args[@]}"} set -- ${args[@]+"${args[@]}"}
[[ $EUID -eq 0 ]] || die "Запустите от root: sudo -i, затем команду ещё раз." [[ $EUID -eq 0 ]] || die "Запустите от root: sudo -i, затем команду ещё раз."
command -v systemctl >/dev/null || die "Нужен systemd." 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 if [[ -f $RESULT && -x /usr/local/x-ui/x-ui ]]; then
die "3X-UI уже установлена этим скриптом. Управление: команда x-ui, данные для входа: cat $RESULT" die "3X-UI уже установлена этим скриптом. Управление: команда x-ui, данные для входа: cat $RESULT"
fi fi
+9 -2
View File
@@ -625,8 +625,15 @@ cmd_update() {
# С 1.1 kit-sub работает без root: переписываем юнит под DynamicUser и LoadCredential. # С 1.1 kit-sub работает без root: переписываем юнит под DynamicUser и LoadCredential.
local c k local c k
c=$(jq -r '.cert // empty' /etc/kit-sub/config.json); k=$(jq -r '.key // empty' /etc/kit-sub/config.json) 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 local sysv
[[ -n $c ]] && echo '19 4 * * * root systemctl restart kit-sub >/dev/null 2>&1' >/etc/cron.d/kit-sub-cert 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 systemctl daemon-reload
if systemctl restart kit-sub && sleep 2 && sub_ok; then if systemctl restart kit-sub && sleep 2 && sub_ok; then
say "Подписка kit-sub обновлена и отвечает" say "Подписка kit-sub обновлена и отвечает"