UID 1を持つユーザーは、すべてのシステムで「デーモン」ですか?

UID 1を持つユーザーは、すべてのシステムで「デーモン」ですか?

私はいくつかのテストコードを書いていますが、UID 1を持つユーザーの名前がす​​べてのUnixシステムで「daemon」であると仮定すると、移植可能かどうか疑問に思います。

編集する:そうでない場合(答えは「いいえ」と思われる)、UID /ユーザー名マッピングはありますか?はいUnices全体で一貫性がありますか(すでに使用している0 / rootを除く)?

答え1

いいえ、どこでもそうではありません。 CentOS 7システムの場合、以下から抜粋/etc/passwd:

bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

Linuxでは、を使用してgetent passwd daemonユーザーのUIDを検索しdaemongetent passwd 1UIDが1のユーザーを見つけることができます。

答え2

いいえ。 Linuxの場合、bin場所daemonが変わりました。以前は1位と2位binでした。daemonMinixでは、#1 / binは実際にオペレーティングシステムのカーネルによって反権利を与えられました(つまり、#0 / rootに少し似ています)。 Solarisでは、UID#1が呼び出され、daemonGID#1が呼び出されます。othersこれは新しいユーザーのデフォルトグループです(インストール中に「role」を使用して作成されたユーザーを除く)。rootstaff

UID#0はもちろんroot... GID#0は通常rootorですwheel

私の考えでは唯一必須ユーザーとグループは#0です。ただし、binグループdaemonも持つことをお勧めします。/空と//スビン。その後、さまざまなシステムファイルとディレクトリを持つことができますsys。特に/dev(Linuxでは現在、デバイスは通常ルートが所有し、さまざまなデバイスグループには複数のグループがあります。/ / dev / random、/ dev /のみ)null / dev / zeroはまだsysグループとして取得されますsys:sys。通常、ユーザーはadmさまざまなログ(元々は/ usr / admにあります)の所有者とグループになり、時にはsyslogが実行されます。通常、manマニュアルページを所有するユーザー/グループが1つあります。

operatorユーザーおよび/またはグループは、コンソールで作業できる人に適用されます。端末は、ロックされたコンピュータルームのコンピュータに直接接続されます。頻繁にバックアップを実行するため、通常、ほとんどすべてにrootアクセスできる人はこのグループのメンバーです。 staff/homeを制御し、ローカルユーザーを追加できる「サブ管理者」のためのグループ。

結局、私たちはさまざまな共通サービスとある程度必要なサービスのための一連のユーザーとグループのペアを得ます。最近ではあまり一般的ではありません:lp=プリンタ、news=ネットワークニュース(NNTP)掲示板、mail=(ローカル)メールサービス、uucp= UnixからUnixへのCoPy...メールやニュースグループの投稿などのコンテンツをまとめてパッケージ化し、リモートUnixシステムに「コピー」する方法です。人々が主にダイヤルアップを使用するときによく使用されます。 tty= TeleTYPE...にはさまざまな端末があります。

まだ多くの人がgamesユーザーを持っています。サウンドカードやビデオカードなどに直接アクセスする必要があるゲームは、そのユーザー(ゲーム)でSetUIDを実行し、-userはgameそのハードウェアのグループに追加されます。このようにして、ゲームはフルルートアクセス(SetUID = rootなど)で実行しなくてもハードウェアに必要なアクセス権を取得できます。また、システム内のすべてのユーザー間で「最高スコア」リストなどを共有できます。

答え3

いいえ、携帯する必要はありません。すべてのローカルインストールでは、UID/名前のペアを自由に変更できます(通常は推奨されませんが)。

uid移植性のために、常にオペレーティングシステムの機能を使用して、数字/記号のユーザーとグループ識別子(および)を変換する必要がありますgid

数字のユーザーID()2に興味がある場合は、数字のグループuidIDを取得して返すコマンドとシステムコールを使用してください。必要にgetent応じて、コマンドなどを使用して数字を記号に変換します。

ユーザーに興味がある場合は、ユーザーdaemon操作を実行するときにシンボル文字列を使用するか、daemonコマンドまたは関数に渡す前に、指定されuidたユーザーのユーザーを取得しますdaemon(たとえば、再getent利用)。uid

lsなどの多くのコマンドには、findシンボルグループ名と数値グループ識別子を処理するためのオプションが含まれています。getentたとえば、次のように変換するために別のコマンドを使用できます。

関連情報