Linux Labs

Безопасность сервера / Ступень 7 из 10

Служба с минимальными правами

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 2 из 6 · на машине · 8 мин

От кого работает служба

Служба читала /etc/shadow, потому что работала от root. Первое ограничение — сменить пользователя.

Файл юнита без строки User= systemd запускает от root: процесс получает все права в системе. lab-preview нужен только каталог отчётов, поэтому для неё заводят отдельную учётную запись без входа (sudo useradd -r -s /usr/sbin/nologin preview, useradd) и указывают её в юните:

ini
[Service]
User=preview

Эту строку не пишут в файл пакета в /usr/lib/systemd/system — его перезапишет обновление. Её кладут в drop-in /etc/systemd/system/<юнит>.d/<имя>.conf, как ты поднимал лимит в уроке о лимитах, и перечитываешь настройки: sudo systemctl daemon-reload, затем sudo systemctl restart <юнит>. Новый процесс пойдёт от указанного пользователя.

Есть и запись «на один запуск»: DynamicUser=yes systemd заводит временного пользователя на время работы службы и убирает после. Удобно, когда службе не нужно владеть файлами на диске между запусками.

Упражнение · сделать

Запусти lab-preview от preview

В drop-in службы lab-preview задай ей пользователя preview (запись уже заведена) так, чтобы правка пережила обновление пакета, и дай новому процессу этого пользователя. Файл юнита в /usr/lib/systemd/system не меняй.

Войти и начать Машина доступна после входа

Цели · 0 из 2

  • Задать User=preview в drop-in поверх файла пакета ещё не выполнена
  • Перезапустить службу от нового пользователя ещё не выполнена

Цели шага

0 из 2
  • Задать User=preview в drop-in поверх файла пакета — ещё не выполнена
  • Перезапустить службу от нового пользователя — ещё не выполнена
Ubuntu 24.04

Цели шага

0 из 2
  • Задать User=preview в drop-in поверх файла пакета — ещё не выполнена
  • Перезапустить службу от нового пользователя — ещё не выполнена
Загрузка…