Панель показывала команду для терминала вместо кнопок обновления и перезапуска, потому что sudo из неё не запускался вовсе: NoNewPrivileges запрещает процессу и его потомкам повышать привилегии. Механизм с sudoers, ради которого всё и делалось, был при этом мёртв. Убрал эту опцию из юнита, оставив комментарий, почему её здесь быть не должно. Ограничение прав никуда не делось: в sudoers сервисному пользователю разрешена ровно одна команда, pzmanager-admin. Заодно описание релиза перестало показываться сырой разметкой. Раздел про установку в работающей панели ни к чему, поэтому берётся только список изменений; блок прокручивается сам, не утягивая страницу, а рядом появилась ссылка на полное описание. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
37 lines
1.4 KiB
Desktop File
37 lines
1.4 KiB
Desktop File
[Unit]
|
|
Description=PZ Manager — веб-панель сервера Project Zomboid
|
|
After=network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=pzserver
|
|
Group=pzserver
|
|
WorkingDirectory=/opt/pzmanager
|
|
ExecStart=/usr/local/bin/pzmanager serve --config /opt/pzmanager/config.yaml
|
|
Restart=on-failure
|
|
RestartSec=5
|
|
|
|
# Менеджер сам останавливает игровой сервер по SIGTERM: сначала отправляет
|
|
# команду quit (мир сохраняется), потом добивает процесс. Дадим ему время.
|
|
KillSignal=SIGTERM
|
|
KillMode=mixed
|
|
TimeoutStopSec=300
|
|
|
|
# Всё своё панель держит в /opt/pzmanager, домашние каталоги ей не нужны.
|
|
#
|
|
# NoNewPrivileges здесь намеренно не выставлен: он запрещает процессу и его
|
|
# потомкам повышать привилегии, а значит ломает sudo — и вместе с ним кнопки
|
|
# обновления и перезапуска панели. Прикрытием служит sudoers: сервисному
|
|
# пользователю разрешена ровно одна команда, pzmanager-admin.
|
|
PrivateTmp=true
|
|
ProtectSystem=full
|
|
ProtectHome=true
|
|
ReadWritePaths=/opt/pzmanager
|
|
|
|
StandardOutput=journal
|
|
StandardError=journal
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|