Пример создания системного пользователя для запуска служб systemd


Автор - Ковалев Антон
Дата последнего редактирования - 02.02.2024

* Проверено на ubuntu 22.04 / ALSE 1.7.x. Для других ОС смотрите соответствие и наличие данных команд в официальной документации поставщика вашей ОС
* С описанием ключей и параметров команд можно ознакомиться используя утилиту man <имя команды>, предустановленную в большинстве ОС
* Команды, описанные ниже выполняются с правами su

Для примера попробуем создать системного пользователя с именем gfagent, для запуска агента GitFlic Runner в службе systemd.

1. Создадите нового системного пользователя командой useradd:

useradd -r -m -s /usr/sbin/nologin gfagent;

2. Создайте необходимые папки и файлы в домашней директории пользователя gfagent командой mkdir.

mkdir -p /home/gfagent/gitflic-runner/build /home/gfagent/gitflic-runner/cache  

3. Скопируйте файлы runner.jar, helper.jar, helper.sh в директорию /home/gfagent/gitflic-runner командой cp

cp runner.jar helper.jar shell-scripts/helper.sh /home/gfagent/gitflic-runner/

4. Установите владельца папки и выдайте необходимые права для файлов командой chown и chmod

sudo chown -R gfagent:gfagent /home/gfagent/; 
sudo chmod -R 744 /home/gfagent/gitflic-runner/

5. В конфигурации юнита для systemd добавьте строчки:

User=gfagent
Group=gfagent

**** Перед выполнением следующих действий, ознакомьтесь с параметрами файла /etc/sudoers.***
* Данные действия могут нарушить безопасность вашей ОС

  • Если необходимо выполнять команды c правами su, добавьте пользователя gfagent в группу sudo командой usermod
usermod -aG sudo gfagent;
  • Что бы убрать запрос пароля при выполнении команд с правами su, у пользователя gfagent, отредактируйте файл /etc/sudoers командой sed, добавив в файл соответствующую запись
sed -i '$ a gfagent ALL=(ALL) NOPASSWD: ALL' /etc/sudoers