
私はいくつかのテストコードを書いていますが、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を検索しdaemon
、getent passwd 1
UIDが1のユーザーを見つけることができます。
答え2
いいえ。 Linuxの場合、bin
場所daemon
が変わりました。以前は1位と2位bin
でした。daemon
Minixでは、#1 / binは実際にオペレーティングシステムのカーネルによって反権利を与えられました(つまり、#0 / rootに少し似ています)。 Solarisでは、UID#1が呼び出され、daemon
GID#1が呼び出されます。others
これは新しいユーザーのデフォルトグループです(インストール中に「role」を使用して作成されたユーザーを除く)。root
staff
UID#0はもちろんroot
... GID#0は通常root
orです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に興味がある場合は、数字のグループuid
IDを取得して返すコマンドとシステムコールを使用してください。必要にgetent
応じて、コマンドなどを使用して数字を記号に変換します。
ユーザーに興味がある場合は、ユーザーdaemon
操作を実行するときにシンボル文字列を使用するか、daemon
コマンドまたは関数に渡す前に、指定されuid
たユーザーのユーザーを取得しますdaemon
(たとえば、再getent
利用)。uid
ls
などの多くのコマンドには、find
シンボルグループ名と数値グループ識別子を処理するためのオプションが含まれています。getent
たとえば、次のように変換するために別のコマンドを使用できます。