LinuxとUnixの非ユーザーサービスアカウントについて質問があります。私たちはLinuxにユーザーアカウントがあることを知っていますが、(非ユーザー)サービスアカウント(デーモン、ニュース、binなど)の用途は何ですか?
$cat /etc/passwd | more
すべてのユーザーアカウントと非ユーザーアカウントを表示します。
bin
サービスアカウントが割り当てられたのはなぜですか?これは意図的に設計されていますか?それとも特別な目的があるのでしょうか?
最後の質問
Microsoftオペレーティングシステム環境(Server 2003または2008)でもこれは本当ですか?
答え1
ディストリビューションがデフォルトのユーザーとグループの目的を文書化することを願っています。たとえば、Debian は/usr/share/doc/base-passwd/users-and-groups.*
Debian にコンテンツを公開します。クイック検索inurl: "doc/base-passwd"(意図的かどうか)コピーがある場所をオンラインで見つけました。これは。
デフォルトでは、彼らはなぜユーザーがいるのかわかりませんbin
。 LSBは、従来の理由で含めるユーザーがいると言います。
これらのユーザーはしばしば「ロックされて」ログインできません。ルートはsu
(または同等のシステムコールを使用して)これらのいずれかに切り替えることができますが、これはデーモンがそのまま実行される方法です。
次のコマンドを使用して、ユーザーが所有するすべてのファイルを見つけることができます。find / -user USER_NAME
組み込みユーザーとグループは、基本的に次の目的で使用されます。
- 特定の特殊ファイル(接続されているプリンターのグループ所有/ devファイル
lp
)へのアクセスを許可します。その後、デーモン(CUPSなど)がこのグループのメンバーになり、アクセス権を取得できます。これはユーザーを対象にすることもできます。たとえば、Debian では、ユーザーをadm
グループに追加すると、そのユーザーがシステムログファイルを表示できます。 - 分離。同じユーザーで実行される 2 つのプログラムは相互に対話できます。たとえば、互いにシグナルを送信し、いくつかのカーネル設定に従って互いに
ptrace
シグナルを送信することもできます(ptrace
これはデバッガの仕組みであり、デフォルトではターゲットを完全に制御できます)。プロセス)。などがその例ですgdm
。syslog
- アクセス制御たとえば、DebianにはCUPSが使用するグループがあります
lpadmin
。このグループにユーザーを追加すると、Webインターフェイスを介してCUPSを管理できます。
最初の2つはおそらく最も一般的です。
PS:/代わりにとを使うこともできますcat /etc/passwd
。これは、代替パスワード/グループストア(LDAPなど)で構成されたシステムで実行されます。cat /etc/group
getent passwd
getent groups
答え2
これはディストリビューションによって異なりますが、詳しく見ると、「サービス」アカウントが特定のプロセスに対応する傾向があることがわかります。私のArch Linuxサーバーには、ユーザーID "ntp"で実行されるNTPデーモン、ユーザーID "http"で実行されるApache Webサーバー、Postgresqlデータベースプロセス用のユーザーID "postgres"があります。
これは適用するのと同じです。最小権限の原則。プロセスを実行するユーザーは、そのタスクを実行するために必要な最小限の権限のみを持っている必要があります。たとえば、ntpd
プロセスはPostgresデータベースに関する重要な情報を読み取ることができず、PostgresプロセスはApache設定ファイルを書き換えることはできません。これは、エラーや意図的な損傷(悪用)によって引き起こされる問題を制限するのに役立ちます。