私はいつもデーモンが「init」システムによって実行、所有、制御、および管理されているシステム全体のサービスであるという印象を受けました。しかし、最近私はいくつかのデーモンサービス(pulseaudioなど)について学びました。良い答え)は、個々のユーザーが所有および制御する「ユーザー固有」サービスとして運営されています。
いつからこんなことが始まりましたか?これは新しいものですか? systemdが導入したinitシステムの「ユーザー固有」デーモンに対する明示的なサポートはありますか?それとも、この現象は他のinitシステムにもありますか?
答え1
もちろん、基本的なメカニズムはそれ自体と同じくらい古いですfork
。wait
これを行うための便利なコマンドラインツールは1990年代からありました。それいいえsystemdで始めてください。
Daniel J. Bernsteinの有名なdaemontoolsパッケージは、スーパーユーザーアクセスなしで自分のサービスセットを管理したいユーザーが利用できます。ユーザーは幸せに設定できますディレクトリスキャンそしてsvscan
それに対抗して戦いなさい。管理者だけが作成する唯一の欠けているのは、svscan
ユーザーのために自動的に実行されるインフラストラクチャです。もちろん、これは権限を削除し、svscan
適切なユーザーとして実行されるシステムサービスです。
Laurent Bercotのs6からWayne Marshallの犯人まで、daemontoolsファミリの他のすべてのツールセットにも当てはまります。
システム管理者が最初からこれらのサービスを手動で設定するのではなく、基本的にこれらのインフラストラクチャを提供する一連のサービス管理ツールです。主にUpstartで始まりますinit
。かなりユーザーごと。
発射エージェントlaunchd
Machとの強力な組み合わせにもかかわらず、同様のアイデアがMacOSにも存在します。
systemdは後で出ました。 PAMプラグイン、デスクトップバス、および「ログイン」デーモンの複雑な組み合わせにより、必要に応じて各ユーザーのテンプレートサービスユニットをインスタンス化するシステム全体のサービスマネージャと一緒にユーザー固有のモードで実行できます。systemd
プログラムの別のインスタンスです。
この機能を提供する他のツールセットには、ノッシュツールセットが含まれます。
追加読書
- 「セッションの初期化」。ヌボリッチレシピ。 Ubuntu。
- ジェームズ・ハント、ステファン・グレーバー、ドミトリー・レッドコフ、スティーブ・ランガチェック(2012-11-12)。Ubuntu Raring Upstartユーザーセッション。 Ubuntu。
- ネイサン・ウィリス(2013-04-17)。ユーザーセッションの開始。 LWN。
- ジョナサンデボインポラード(2016)。 」ユーザー固有のシステムサービス」。 スナックガイド。ソフトウェア。 jdebp.eu.
- ジョナサンデボインポラード(2016)。 」ユーザー別ユーザーサービス」。 スナックガイド。ソフトウェア。 jdebp.eu.
- ルートアクセスなしでUpstartサービスを作成および管理する
- https://unix.stackexchange.com/a/407863/5132
答え2
これは常に可能でした。
(プロセス1)を作成するにはinit
親プロセスになります。あなたがすべきことはフォークと死ぬことだけです。親プロセスが終了すると、init
孤立プロセスが採用されます。
収益化の中断の別の部分は、stdin/stdout/stderrを閉じるか、少なくとも端末から切断することです。
これらのいずれもプロセスの所有者ユーザーを変更しません。 CAP_SETUID(root)機能を持つプロセスのみがこれを実行できます。プロセス所有者が孤児プロセスを介して変更を実行できるようにすると、セキュリティは役に立ちません。
理由は。わかりません。