преобразовать выскочку в systemd - запустить команду как root, порождает команду как другой пользователь

Мне нужна помощь в преобразовании выскочки .conf в .service systemd. По сути, мой файл .conf делает следующее: exec su -l foo -c 'cd / var / www / path / to / file; bundle exec puma -C config / puma.rb '

Насколько я могу судить, мы запускаем команду от имени пользователя root, а затем создаем оболочку входа в систему с помощью нашего «пользователя»:

root 1 0,0 0,0 5 7 ? Ss Date 0:00 su -l foo -c cd / var / www / path / to / file; связка exec puma -C config / puma.rb foo 2 0,0 0,0 6 8? Ss Date 0:00 -su -c cd / var / www / path / to / file; bundle exec puma -C config / puma.rb

Это то, что у меня есть с моим файлом systemd .service:

[Unit]
Description=simple boot on start
After=network.target

[Service]
Type=simple
User=foo
WorkingDirectory=/var/www/path/to/file
ExecStart=/usr/bin/sudo /bin/bash -lc 'bundle exec puma -C /var/www/path/to/file/config/puma.rb'
Restart=always

[Install]
WantedBy=multi-user.target

Я знаю, что это неправильно, но это работает ... вроде как. В том смысле, что я запускаю процесс, но как root. Не выполняется команда от имени пользователя root для запуска процесса от имени «пользователя»:

root 3 0,0 0,0 4 5? Ss Date 0:00 / usr / bin / sudo / bin / bash -lc bundle exec puma -C /var/www/path/to/file/config/puma.rb

Это довольно ново для меня в новом работа, поэтому пытаюсь найти возможно вокруг этой системы. Любая помощь приветствуется.

Спасибо! D

0
задан 27 December 2018 в 21:34
1 ответ

Вы не должны просто копировать вещи буквально в ExecStart = , особенно те, которые предназначены только для настройки, например, изменение рабочего каталога или пользователя. У них разные директивы (которые вы уже использовали!), Поэтому вам следует просто запустить свою программу.

В частности, для Puma вам следует просто начать с примера systemd unit и настроить его, чтобы добавить пользователя , рабочий каталог, путь к puma и (если применимо) ваш сертификат и ключ TLS.

1
ответ дан 4 December 2019 в 15:47

Теги

Похожие вопросы