Зачем systemd unit
Сystemd — стандартный init-менеджер в современных Linux-дистрибутивах (Ubuntu 16.04+, Debian 8+, CentOS 7+, RHEL 7+, Arch). Запуск приложения через systemd даёт автозапуск при boot, автоматический перезапуск при падении, единое логирование через journalctl, изоляцию через cgroups и namespaces.
Service vs Timer
- .service — описывает само приложение или скрипт. Содержит команду запуска, зависимости, лимиты.
- .timer — расписание для запуска .service. Альтернатива cron с интеграцией в journal.
Базовая безопасность unit
Включаемые опции:
NoNewPrivileges=true— запрет на эскалацию привилегий через setuid.PrivateTmp=true— изолированная /tmp.ProtectSystem=strict— read-only /usr, /etc, /boot.ProtectHome=true— недоступ к /root и /home.ReadWritePaths=<workdir>— белый список писать.
Для production-нагрузок дополнительно: ProtectKernelTunables, ProtectKernelModules, RestrictNamespaces, SystemCallFilter, CapabilityBoundingSet.
Установка
- Скопировать unit в
/etc/systemd/system/. sudo systemctl daemon-reload.sudo systemctl enable --now <name>.- Проверка:
systemctl status <name>,journalctl -u <name> -f.
- systemd.service(5) — официальный manpage. systemd. man.archlinux.org/man/systemd.service.5. обновляется.
- systemd.exec(5) — параметры выполнения. systemd. man.archlinux.org/man/systemd.exec.5. обновляется.
- systemd.timer(5). systemd. man.archlinux.org/man/systemd.timer.5. обновляется.
- Lennart Poettering — Service Hardening. Lennart Poettering. 0pointer.de. обновляется.
