Назад | Перейти на главную страницу

Запуск службы при входе пользователя root

У меня есть два сценария, второй полагается на первый:

b_reb:

Этот сценарий создает файл модуля для второго сценария. В a_reb сервис следует запускать только после того, как root пользователь входит в систему и должен выполняться в том же сеансе, что и root.

Здесь b_reb сценарий:

#!/bin/bash
# Installing updates and other software
echo "Creating systemd unit file..."
cat << EOF > /usr/lib/systemd/system/a_reb.service
[Unit]
Description="Basic setup"

[Service]
WorkingDirectory=$(pwd)
Type=forking
ExecStart=/bin/bash $(pwd)/a_reb
KillMode=process

[Install]
WantedBy=multi-user.target
EOF
echo "Enabling a_reb at startup..."
systemctl enable a_reb.service
reboot now

Итак, сервер перезагружается и root входит в систему. Теперь в том же сеансе a_reb следует выполнить, запустив a_reb.service. Я не сделал a_reb пока нет, но его содержание не имеет значения.

Например: после входа в систему root, a_reb выполняется и выводит запрос на ответ root.

Я надеюсь, что смогу правильно объяснить. Я также открыт для других способов сделать это. Основная идея b_reb что-то делает, затем перезагружается, после чего a_reb запускается, как только root входит в систему после перезагрузки.

[ОБНОВИТЬ]

b-reb устанавливает обновления и необходимые пакеты в систему. Впоследствии он меняет avahi-daemon имя хоста для .alocal. Затем серверу необходимо перезагрузиться.

a_reb настраивает установленное программное обеспечение и присоединяется к домену. Присоединение к домену выглядит так:

# Get adm-user for domain-join
read -p 'adm username for domain-join: ' ADM
echo "Continuing as $ADM..."
realm join MYDOMAIN.LOCAL –U $ADM

Вот почему мне нужно, чтобы сценарий запускался от имени пользователя root (я не хочу использовать sudo). Нас 4 человека, которые будут использовать это, и у каждого из нас есть собственный адм-пользователь. realm запросит пароль пользователя, так что в этом нет необходимости.

Ваши задачи:

  • b-reb устанавливает в систему обновления и необходимые пакеты. Впоследствии он изменяет имя хоста avahi-daemon на .alocal. Затем серверу необходимо перезагрузиться.

  • a_reb настраивает установленное программное обеспечение и выполняет присоединение к домену.

Если вы собираетесь вообще усложнить это, я бы предложил использовать Ansible, Puppet или Chef для реального управления конфигурацией - и на самом деле вы заметили, что планируете автоматизировать это в будущем. Следовательно:

Превратить это в услугу - ненужное осложнение. И что вы пытаетесь делать с a_reb когда служба читает с консоли, это плохая практика. Просто поместите свои два сценария оболочки в /usr/sbin и проинструктируйте своих четырех пользователей запускать их, когда процедура (я не совсем понимаю это из вашего описания).