GNU/Linux >> Znalost Linux >  >> Linux

Konfigurace služby Systemd pro spuštění s přístupem root

Ř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

Linux
  1. Linux – jak získat méně Ttys s Systemd?

  2. Jak spustit příkaz, který zahrnuje přesměrování nebo potrubí pomocí Sudo?

  3. Linux – Spouštět skript každých 30 minut pomocí Systemd?

  1. Spustit službu Systemd po automatickém připojení, ale poté, co k ní přistoupíte?

  2. Bez přístupu root spusťte R s vyladěným BLAS, když je propojen s referenčním BLAS

  3. Soubor služby existuje, ale nebyl nalezen systémem systemd

  1. Jak spravovat služby Systemd pomocí Systemctl v systému Linux

  2. Zastavení jednotky Systemd společně s jinou. Zahájení prací?

  3. Jak zastavit službu systemd