追加読書

追加読書

私はいつもデーモンが「init」システムによって実行、所有、制御、および管理されているシステム全体のサービスであるという印象を受けました。しかし、最近私はいくつかのデーモンサービス(pulseaudioなど)について学びました。良い答え)は、個々のユーザーが所有および制御する「ユーザー固有」サービスとして運営されています。

いつからこんなことが始まりましたか?これは新しいものですか? systemdが導入したinitシステムの「ユーザー固有」デーモンに対する明示的なサポートはありますか?それとも、この現象は他のinitシステムにもありますか?

答え1

もちろん、基本的なメカニズムはそれ自体と同じくらい古いですforkwaitこれを行うための便利なコマンドラインツールは1990年代からありました。それいいえsystemdで始めてください。

Daniel J. Bernsteinの有名なdaemontoolsパッケージは、スーパーユーザーアクセスなしで自分のサービスセットを管理したいユーザーが利用できます。ユーザーは幸せに設定できますディレクトリスキャンそしてsvscanそれに対抗して戦いなさい。管理者だけが作成する唯一の欠けているのは、svscanユーザーのために自動的に実行されるインフラストラクチャです。もちろん、これは権限を削除し、svscan適切なユーザーとして実行されるシステムサービスです。

Laurent Bercotのs6からWayne Marshallの犯人まで、daemontoolsファミリの他のすべてのツールセットにも当てはまります。

システム管理者が最初からこれらのサービスを手動で設定するのではなく、基本的にこれらのインフラストラクチャを提供する一連のサービス管理ツールです。主にUpstartで始まりますinitかなりユーザーごと。

発射エージェントlaunchdMachとの強力な組み合わせにもかかわらず、同様のアイデアがMacOSにも存在します。

systemdは後で出ました。 PAMプラグイン、デスクトップバス、および「ログイン」デーモンの複雑な組み合わせにより、必要に応じて各ユーザーのテンプレートサービスユニットをインスタンス化するシステム全体のサービスマネージャと一緒にユーザー固有のモードで実行できます。systemdプログラムの別のインスタンスです。

この機能を提供する他のツールセットには、ノッシュツールセットが含まれます。

追加読書

答え2

これは常に可能でした。

(プロセス1)を作成するにはinit親プロセスになります。あなたがすべきことはフォークと死ぬことだけです。親プロセスが終了すると、init孤立プロセスが採用されます。

収益化の中断の別の部分は、stdin/stdout/stderrを閉じるか、少なくとも端末から切断することです。

これらのいずれもプロセスの所有者ユーザーを変更しません。 CAP_SETUID(root)機能を持つプロセスのみがこれを実行できます。プロセス所有者が孤児プロセスを介して変更を実行できるようにすると、セキュリティは役に立ちません。

理由は。わかりません。

関連情報