これらのユーザーはいつ作成されましたか?
あなたが言及したものの場合、それらはシステムのインストール時に作成されました。これらのユーザーアカウントは従来のもので、数十年前のものもあります。それらも標準化されています。Linux Standard Baseは、それらを以下に分割します。
- 必要に応じ、標準のユーザーアカウントを
root、binとdaemon。そして
- オプションの標準ユーザーアカウント
adm、lp、sync、shutdown、halt、mail、news、uucp、operator、man、およびnobody
ここで言及されている他のユーザーアカウントは- 、pulse、avahi、colord及びDebian-exim(py4onのパスワードファイルから1選ぶ) -あなたの次の質問に私たちをもたらします。
これらは、インストールされる新しいプログラムにどのように関連しますか?
非標準のユーザーアカウントは、さまざまなパッケージの「メンテナンススクリプト」によって作成および破棄されます。これらのパッケージはインストールおよびパージされるためです。ユーザーアカウントは、パッケージのいわゆるpostinstメンテナースクリプトによって作成されます。このスクリプトはgetent、ユーザーアカウントが既に存在するかどうかを確認するために実行されますuseradd。理論的には、パッケージのいわゆるpostrmメンテナースクリプト、実行によって削除されますuserdel。
実際には、パッケージのユーザーアカウントは削除されません。Fedora wiki(qv)は、これには困難が伴うと説明しています。参照Debianのバグ#646175単純に決定されたアクションで、この根拠の例について、いない削除するにはrabbitmq、パッケージが削除されたときに、そのアカウントの庇護の下で実行続けデーモンの問題を解決するために、ユーザーアカウントを。
これらのプログラムは異なるUIDでどのように開始されましたか?
UnixおよびLinuxでは、スーパーユーザーの保護下で実行されているプロセスは、そのユーザーアカウントを別のアカウントに変更し、同じプログラムを実行し続けることができますが、その逆は許可されません。(set-UIDメカニズムを使用する必要があります。)
デーモン管理システムはスーパーユーザーとして実行されます。その構成データは、特定のデーモンが特定のユーザーアカウントの保護下で実行されることを指定します。
- System 5
rcでは、スクリプトは/etc/init.dなどのヘルパーツールstart-stop-daemonとその--chuidオプションを使用します。
- daemontoolsの家族サービスマネージャでは、
runスクリプトの呼び出しsetuidgid、s6-setuidgid、chpst、またはrunuidユーザーアカウント名を持ちます。ユーザーアカウントを設定する/unix//a/179798/5132にこの例がありnagiosます。
- upstart
setuidでは、ジョブファイルにユーザーアカウントを指定するスタンザがあります。これは特にきめ細かいものではなく、/superuser//a/723333/38062で説明されているものが必要な場合があります。
- systemd
User=では、ユーザーアカウントを指定する設定がサービスユニットファイルにあります。
デーモン管理システムがデーモンになるプロセスを生成すると、これらのメカニズムはスーパーユーザー特権をドロップし、デーモンプロセスは特権のないユーザーアカウントの保護下で実行され続けます。
良いデーモン管理がこのように行われる理由はかなり長い説明があります。しかし、あなたは理由を尋ねませんでした。いつ、どのように、どこから。thereforeしたがって、非常に短い説明:
UnixおよびLinuxオペレーティングシステムは、異なるユーザーアカウントの保護下で実行されているプロセスを互いに隔離します。歴史的に、スーパーユーザーとして実行されたデーモンを引き継ぐことができれば、好きなことを何でもすることができました。一方、非特権アカウントの保護下で実行されるデーモンは、その非特権アカウントができるファイル、ディレクトリ、デバイス、およびプロセスにのみアクセスできます。システム相互信頼できないデーモンプログラムは、すべての異なるユーザーアカウントのaegisesの下で実行されていると、お互いのアクセス/コントロールにできない(内部、信頼された)ファイル/ディレクトリ/プロセス/デバイスを、それゆえ、そのはるかに困難クラックすることです。
参考文献