GNU/Linux >> Znalost Linux >  >> Linux

Upstart:Spusťte službu jako neprivilegovaný uživatel a skript před spuštěním jako root

upstart nemá žádné zařízení ekvivalentní systemd 's PermissionsStartOnly nastavení. Všechny procesy v úloze běží podle nastavení uživatele pomocí setuid sloka, jak říká kuchařka.

Takže dělejte věci způsobem daemontools.

Použijte setuidgid , setuidgid , s6-setuidgid , chpst , runuid nebo setuidgid v exec sloka:

exec \
setuidgid somebody \
unicorn -D -c /opt/posty_api/unicorn.rb --env production >> /var/log/posty/upstart.log 2>&1

To je mimochodem hrozný logovací mechanismus. Způsob daemontools by měl správný, automaticky cyklovaný, otočný na vyžádání, omezený velikostí, pomocí multilog , multilog , s6-log , svlogd , tinylog nebo cyclog . upstart je však obtížné se s nimi integrovat, vzhledem k jeho expect mechanismus.

expect fork
exec \
setuidgid somebody \
unicorn -D -c /opt/posty_api/unicorn.rb --env production 2>&1 | \
/usr/local/bin/chdir /var/log/ \
setuidgid log \
cyclog posty/unicorn/

(chdir zde je řetězové načítání z nosh balíček a není nezbytně nutný. Ale to dělá věci poněkud uspořádanější.)


Linux
  1. Jak zajistit, aby skript Python běžel jako služba?

  2. Spusťte bash skript jako démona

  3. Jaký je rozdíl mezi root a sudo?

  1. Jak zpětně zajistit, aby skript běžel jako root?

  2. Jak zajistit, aby skript Shell vždy běžel jako root?

  3. Spustit skript s argumenty jako uživatel?

  1. Spusťte php skript jako proces démona

  2. Jak spustit příkaz jako konkrétní uživatel ve skriptu init?

  3. Spustit příkaz shell v jenkins jako uživatel root?