回答:
固有のリスクはないと思います。これは、システムアカウントとユーザーアカウントとを区別するためだけに行われることです。私の経験からすると、500未満の数値を使用する習慣はRedhat-ismであり、それ以上のものはありません。
Solarisでは、ユーザーにも100から始まる番号が割り当てられていましたが、わずか数年後に、2つの部門に同じUIDを持つ複数のユーザーがいたため、2つの小さな部門のシステムを一緒にマージすると悪夢が生じることがわかりました/ GIDが割り当てられています。
これは、UIDを割り当てる際の主なリスク/頭痛です。UIDはユーザーの特定のファイル/ディレクトリのiノードに最終的に書き込まれるものであるため、find
UID 1234が所有するファイルを大量に探して5678に変更する必要があるので、道を進む必要はありません。
そのため、管理者はUIDの選択にいくつかの考えを入れることで、今後の頭痛の種を回避できます。
500以上の使用は、Redhat(および他のUnix)が、作成する必要のあるシステムアカウントがユーザーに割り当てられたUIDと混ざらないように十分なバッファーを提供するための試みです。
ちなみに、番号500は、構成ファイルのこの設定によって決まります/etc/login.defs
。
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 500
UID_MAX 60000
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 500
GID_MAX 60000
useradd
/ adduser
コマンドでデフォルトの動作を上書きしたい場合は、これを任意の値に変更できます。
useradd
manページを見ると、GIDのデフォルト値について説明しているこの部分に気付くでしょうが、このコメントはUIDにも適用できます。
抜粋
-g, --gid GROUP
The group name or number of the user´s initial login group. The group name
must exist. A group number must refer to an already existing group.
If not specified, the behavior of useradd will depend on the USERGROUPS_ENAB
variable in /etc/login.defs. If this variable is set to yes
(or -U/--user-group is specified on the command line), a group will be
created for the user, with the same name as her loginname. If the variable
is set to no (or -N/--no-user-group is specified on the command line),
useradd will set the primary group of the new user to the value specified by
the GROUP variable in /etc/default/useradd, or 100 by default.
useradd
マニュアルページで注意すべきもう1つの点は、システムアカウントの生成に関するこのビットです。
抜粋
-r, --system
Create a system account.
System users will be created with no aging information in /etc/shadow,
and their numeric identifiers are choosen in the SYS_UID_MIN-SYS_UID_MAX
range, defined in /etc/login.defs, instead of UID_MIN-UID_MAX (and their
GID counterparts for the creation of groups).
Note that useradd will not create a home directory for such an user,
regardless of the default setting in /etc/login.defs (CREATE_HOME). You
have to specify the -m options if you want a home directory for a system
account to be created.
useradd -r ...
パッケージのインストール時に、RPMなどのさまざまなパッケージマネージャーに組み込まれるスクリプトでよく使用されるのは、この方法()です。このようにスクリプト化すると、システムは、システムのユーザーに既に割り当てられているUID / GIDを踏むリスクなしに、特定のシステムで次に利用可能なUID / GIDを自動的に選択できます。
カーネルの観点から見ると、特別なユーザーは1人だけです。UID0です。管理上の理由でUIDの範囲を分割すると、作業が簡単になります。一般的な範囲は、ベンダー、システム、ローカル、グローバルです。
ベンダーのユーザーは、システムの初期インストール時にインストールされ、ベンダーによって静的に管理されます。システムユーザーは、インストールされているパッケージに応じてマシンごとにインストールされます。ほとんどのユーザー追加/削除ユーティリティには、これらを個別に処理するための範囲制限があります。ローカルユーザーは通常のユーザーであり、マシンごとに割り当てられます。グローバルユーザーは中央データベースによって割り当てられますが、通常のユーザーです。UID範囲を使用すると、これらの異なるグループ間の競合を防ぐことができます。これらのカットオフの場所はさまざまですが、通常は構成可能です。
これを行うことに固有の危険はありません。UID 499でユーザーを作成する場合、追加の特権はありません。UIDが通常システムユーザー用に予約されているため、推奨されない理由は単純です。このようなUIDを作成する際に発生する可能性のある問題は、一部のシステムサービスがUIDが利用可能であることを期待している場合です。これは、よく知られているポートで実行される新しいサービスを作成するようなものです。必ずしも問題はありませんが、それは良い習慣ではなく、sshd、ftpdなどをセットアップしているときにさらに問題を引き起こす可能性があります
とはいえ、UIDが500未満のユーザーが問題なく作成された多くのシステムを見てきました。ただし、ユーザーベースが拡大し、現在何千人ものユーザーがいるにつれて、ユーザーアカウントとシステムアカウントを区別することが難しくなる可能性があります。UIDが500未満のルールに従うと、非常に簡単です。そのため、アカウントを整理するのにも良い方法です。
本当の危険はありません。カーネルは、0以外のユーザーID値を気にしません。ほとんどの管理ツールも気にしません—システムユーザーと人間ユーザーの違いを生じさせるシステムの部分はほとんどありません。
システムユーザーは専用のグループを持つ傾向があるため、必要以上に多くのグループに属するアカウントを作成することはほとんどありません。
一部のディストリビューションでは、専用ユーザーを必要とするシステムサービスを含むパッケージをインストールするときに割り当てられるユーザーを含む、システムユーザー用に1〜499(Red Hatとその親族)または1〜999(Debianとその親族)の範囲を予約しています。Debianの慣習では、1〜99の範囲は静的に割り当てられます(したがって、その範囲で人間のユーザーを作成することはシステムユーザーと衝突する可能性があるため非常に悪い考えです)。新しいシステムユーザーは無料のユーザーIDを選択するため、この範囲では無害です。
ディスプレイマネージャーが、リスト内のしきい値未満のUIDをユーザーに提供しないなど、軽微な不便が生じる場合があります。
孤立したマシンの主な危険は、仲間のシステム管理者を混乱させる可能性があることです。ユーザーIDが共有されているネットワーク内のマシンの場合、これらのユーザーがシステムユーザーと同じユーザーIDを持つ他のマシンと競合する可能性があります。共有ユーザーIDを持つネットワークでは、人間ユーザーの場合は1000〜65533の範囲、さらには10000〜65533の範囲に固執するのが最適です。