Řešení 1:
řekněte systemd, aby spustil službu s
sudo
?
sudo
nemá s tím nic společného.
Obvykle dáváte systemd pokyn, aby spustil službu jako konkrétní uživatel/skupina s User=
a Group=
direktivě [Service]
oddíl souboru jednotky.
Nastavte je jako root (nebo je odstraňte, protože výchozí je spuštění jako root).
Řešení 2:
Chcete-li vymazat, systemd
systémové služby běží ve výchozím nastavení jako root, ale stále existuje rozdíl mezi výchozím chováním a spuštěním systémové služby s User=root
.
Jak je zdokumentováno v Proměnných prostředí v vytvořených procesech, tyto proměnné se nastavují pouze v případě, že User=
je nastaveno:
$USER, $LOGNAME, $HOME, $SHELL
Testoval jsem, abych toto zjištění potvrdil. Pokud tedy chcete spustit službu systemd jako root, která potřebuje jednu z výše uvedených proměnných, musíte nastavit User=root
.
Řešení 3:
dočasné řešení, ale zprovoznil se v malíčku:
/usr/bin/sudo /bin/bash -lc 'bundle exec rails server -e demo -p 80'
Lze spustit s uživatelem, který má oprávnění sudo v souboru jednotky systemd, jako je tento:
[Unit]
Description=Rails Webserver
After=syslog.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/var/www/webserver
ExecStart=/usr/bin/sudo /bin/bash -lc 'bundle exec rails server -e demo -p 80'
Restart=always
KillSignal=SIGQUIT
[Install]
WantedBy=multi-user.target