追加読書

追加読書

私はUbuntu 12.04デスクトップシステムを実行しています。これまで私はいくつかのプログラムをインストールしました(Sudo権限があります)。

  1. システムでユーザーのリストを確認すると、20人を超えるユーザーなどの長いリストが表示されます。これらのユーザーはいつ作成されましたか(デーモン、sys、同期、ゲーム、パルスなど)。これらのうちどれがインストールされる新しいプログラムとどのような関係がありますか?

  2. 私のシステムでプログラムを実行したら、私のUIDを使って実行する必要があります。しかし、一つ作るメモ、他のUID(たとえば、ルート、デーモン、avahi、syslog、colordなど)で実行される他の多くのプログラムがあります。これらのプログラムはどのように異なるUIDで始まりますか?

答え1

ユーザーアカウントは、実際の人間ユーザーとしてだけでなく、システムサービスを実行するためにも使用され、時にはシステムファイルの所有者としても使用されます。これは、人間のユーザーリソース(プロセス、ファイルなど)間の分離とシステムサービスリソース間の分離には、背後で同じメカニズムが必要なためです。

ユーザーが実行するプログラムは通常、ユーザーのユーザー ID で実行されます。それは単なるシステムです。悪魔自分のアカウントで実行します。デーモンの実行時期を示す構成ファイルは、デーモンを実行する必要があるユーザーまたはデーモンの起動後に権限のないアカウントに切り替えられるかどうかを示します。一部のデーモンには完全な管理権限が必要なためアカウント。多くのデーモンは特定のハードウェアデバイスまたは特定のファイルにのみアクセスできるため、専用のユーザーアカウントで実行されます。これはセキュリティのために行われます。これにより、サービスの1つにバグや設定エラーがあっても、攻撃者はそのサービスが実行できるアクションではなく、そのサービスが実行できるアクションに制限されるため、完全なシステム攻撃につながりません。 。ファイルの上書き、プロセス監視などの機能。

Ubuntuでは、システムのインストール中に0〜99の範囲のユーザーIDが生成されます。 0はルートです。 1〜99の範囲の多くの項目は記録上の理由でのみ存在し、その項目を使用する特定のローカルインストールとの以前のバージョンとの互換性のためにのみ維持されます(いくつかの追加項目は影響を与えません)。専用のユーザーIDを必要とするサービスをインストールまたは削除すると、100から999の範囲のユーザーIDが動的に作成および削除されます。 1000以上の範囲は、人間のユーザーまたはシステム管理者によって作成された他のアカウントに適用されます。グループも同じだ。

答え2

/etc/passwd?を確認してこのユーザーのリストを見つけたとします。これは完全に正常な現象です。 「ユーザー」は、「実際のユーザー」だけでなく、システムの特定の領域にあるプログラムもロックし、変更を追跡する権限のセットを渡すために使用されます(グループと同じ概念)。

/etc/passwd参考のために、以下にRaspberry Piファイルの1つを挿入しました。ntopファイルの下部には、ntopプログラム(ネットワーク監視)で作成されたユーザーが表示されます。同様にバグレポートなども同様ですsshdgnats

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
pi:x:1000:1000:,,,:/home/pi:/bin/bash
sshd:x:101:65534::/var/run/sshd:/usr/sbin/nologin
ntp:x:102:104::/home/ntp:/bin/false
statd:x:103:65534::/var/lib/nfs:/bin/false
messagebus:x:104:106::/var/run/dbus:/bin/false
usbmux:x:105:46:usbmux daemon,,,:/home/usbmux:/bin/false
lightdm:x:106:109:Light Display Manager:/var/lib/lightdm:/bin/false
smmta:x:107:110:Mail Transfer Agent,,,:/var/lib/sendmail:/bin/false
smmsp:x:108:111:Mail Submission Program,,,:/var/lib/sendmail:/bin/false
Debian-exim:x:109:113::/var/spool/exim4:/bin/false
ntop:x:110:115::/var/lib/ntop:/bin/false

答え3

このユーザーはいつ作成されましたか?

言及した場合は、システムのインストール中に作成されます。これらユーザーアカウントすべて伝統的であり、いくつかは数十年前にさかのぼります。また、標準化されています。 Linux標準ライブラリはこれを次のように分割します。

  • これ必須標準ユーザーアカウントrootbinおよびdaemon
  • これ任意に選択できる標準ユーザーアカウントadm、、、、、、、、、、、、、および​​​​​​lpsyncshutdownhaltmailnewsuucpoperatormannobody

ここに記載されている他のユーザーアカウント - pulse、、、および(py4onのパスワードファイルから1つ選択) - 次avahiの質問に回答します。colordDebian-exim

これらのうちどれがインストールされる新しいプログラムとどのような関係がありますか?

これらのパッケージをインストールしてクリーンアップすると、さまざまなパッケージの「メンテナンススクリプト」によって非標準のユーザーアカウントが作成および削除されます。ユーザーアカウントは、ユーザーアカウントがすでに存在するかどうかを確認するために実行されるパッケージのいわゆるメンテナンスpostinstスクリプトによって生成されます。理論的には。getentuseraddpostrmuserdel

実際、パッケージのユーザーアカウントは削除されません。 Fedora Wiki(qv)では、これが困難になる可能性があると説明しています。バラよりDebian のバグ #646175決定する実用的な例を見てみましょう。いいえパッケージのクリーンアップ時にユーザーアカウントを削除して、rabbitmqそのアカウントのスポンサーとしてデーモンが実行され続ける問題を解決します。

これらのプログラムは他のUIDでどのように起動しますか?

UnixとLinuxでスーパーユーザーサポートで実行されるプロセスは、ユーザーアカウントを別のアカウントに変更して同じプログラムを実行し続けることができますが、その逆は許可されません。 (set-UIDメカニズムを使用する必要があります。)

デーモン管理システムはスーパーユーザーとして実行されます。その構成データは、特定のユーザーアカウントのスポンサーとして特定のデーモンプロセスが実行されることを指定します。

  • システム5では、スクリプトrcはオプション/etc/init.dなどの補助ツールを使用します。start-stop-daemon--chuid
  • daemontools Service Managerスイートを使用すると、ユーザーアカウント名またはを使用してスクリプトをrun呼び出すことができます。このような例もあります。setuidgids6-setuidgidchpstrunuidhttps://unix.stackexchange.com/a/179798/5132ユーザーアカウントを設定しますnagios
  • setuid起動用の作業ファイルにユーザーアカウントを指定するセクションがあります。これは特に細かいものではなく、時には欲しいものが説明されています。https://superuser.com/a/723333/38062
  • User=systemdの場合、サービス単位ファイルにユーザーアカウントを指定する設定があります。

デーモン管理システムがプロセスをデーモンとして生成するとき、これらのメカニズムはスーパーユーザー権限の削除したがって、デーモンは、権限のないユーザーアカウントのスポンサーとして引き続き実行されます。

説明が少し長いです。なぜ良いデーモン管理はこの方法で行われます。しかし、なぜ、いつ、どこから質問しません。 ☺非常に簡単な概要は次のとおりです。

Unix および Linux オペレーティングシステムは、異なるユーザーアカウントで実行されるプロセスを互いに分離します。歴史的に、誰かがスーパーユーザーとして実行されているデーモンを引き継ぐことができれば、彼は自分が望むものは何でもできました。一方、権限のないアカウントのスポンサーとして実行されるデーモンは、権限のないアカウントがアクセスできるファイル、ディレクトリ、デバイス、およびプロセスにのみアクセスできます。システムお互いを信頼しないデーモンこれらはすべて異なるユーザーアカウントのスポンサーとして実行され、互いの(内部、信頼できる)ファイル/ディレクトリ/プロセス/デバイスへのアクセス/制御がないため、ハッキングするのがはるかに困難です。

追加読書

答え4

Linuxでは、サービスをインストールすると、そのサービス名または同様の名前でユーザーを作成するため、他のファイルにアクセスすることはできません。

関連情報