UIDが500未満の一般ユーザーを作成すると、どのようなリスクがありますか? UIDが既存のUIDと重複しないと仮定すると、どのような問題が発生する可能性がありますか?
私がやりたいことではなく、私が見たことで、なぜしてはいけないことなのか気になります。この例では RHEL5 にあります。
答え1
固有のリスクはないと思います。システムアカウントとユーザーアカウントを分離するために行われただけです。私の経験によると、500未満の数字を使用することはRedhatismであり、それ以上ではありません。
Solarisはまた、ユーザーに100から始まる番号が割り当てられているのを見ましたが、数年後に2つの小さな部門のシステムを一緒にマージすると、複数のユーザーが同じUID / GIDが割り当てられ、悪夢につながることがわかりました。
これは実際にUIDを割り当てる際の大きなリスク/問題になります。 UIDは与えられたファイル/ディレクトリのユーザーのinodeに書き込まれるので、後でfind
UID 1234が所有するファイルをたくさん見つけて5678に変更したくないでしょう。
したがって、管理者はUIDの選択を慎重に検討することで、将来の問題を回避できます。
500以上を使用することは、Redhat(および他のUnix)が自分自身に十分なバッファを提供し、作成する必要があるシステムアカウントがユーザーに割り当てられたUIDと混同されないようにすることです。
/etc/login.defs
ただし、数字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 のマニュアルページ
マニュアルページを見ると、useradd
このセクションでは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
は、システムアカウントの作成に関するものです。
抜粋
-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を自動的に選択できます。
答え2
実際のリスクはありません。カーネルは、ゼロ以外のユーザーID値については気にしません。ほとんどの管理ツールも気にしません。システムユーザーと人間ユーザーを区別するシステム部分はほとんどありません。
システムユーザーは専用グループを持つ傾向があるため、より多くのグループに属するアカウントを作成する可能性はありません。
一部のディストリビューションでは、専用ユーザーが必要なシステムサービスを含むパッケージをインストールするときに割り当てられたユーザーを含む、システムユーザーのために1〜499(Red Hatと関連バージョン)または1〜999(Debianと関連バージョン)の範囲を予約します。 。 Debian の慣例は、範囲 1 ~ 99 が静的に割り当てられることです(したがって、その範囲で人間のユーザーを作成することはシステムユーザーと競合する可能性があるため、非常に悪い考えです)。一方、範囲100〜999は動的に割り当てられます(したがって、人間のユーザーを作成することはその範囲内で無害です)。新しいシステムユーザーは無料のユーザーIDを選択するので、範囲)。
ディスプレイマネージャがリストしきい値を下回るUIDをユーザーに提供しないなど、マイナーな不便が発生する可能性があります。
コンピュータを隔離する際の最大のリスクは、他のシステム管理者を混乱させる可能性があることです。ユーザIDを共有するネットワーク上のコンピュータの場合、システムユーザと同じユーザIDを持つ他のコンピュータと競合する可能性があります。共有ユーザーIDを持つネットワークでは、人間のユーザーが1000-65533または10000-65533の範囲にも従うのが最善です。
答え3
カーネルの観点から見ると、特別なユーザーはUID 0 1人だけです。管理上の理由からUID範囲を分割すると、生活が容易になる可能性があります。一般的な範囲は、プロバイダ、システム、ローカル、グローバルです。
ベンダーユーザーは、システムの初期インストール時にインストールされ、ベンダーによって静的に管理されます。インストールされているパッケージに応じて、システムユーザーが各コンピュータにインストールされます。ほとんどのユーザー追加/削除ユーティリティには、個別に処理するための範囲制限があります。ローカルユーザーは一般ユーザーであり、コンピューターごとに割り当てられます。グローバルユーザーは中央データベースによって割り当てられますが、すべて一般ユーザーです。 UIDスコープを使用すると、これらの異なるグループ間の競合を防ぐことができます。これらのカットオフはさまざまですが、一般的に設定可能です。
答え4
PAMプロファイルは通常、UIDに基づいて決定を下します。たとえば、RHEL 7.7の行は次のようになります。
/etc/pam.d/password-auth:auth requisite pam_succeed_if.so uid >= 1000 quiet_success
/etc/pam.d/password-auth:account sufficient pam_succeed_if.so uid < 1000 quiet
したがって、システムアカウントには、通常のユーザーアカウントには必要ない特別な権限が付与されます。また、uidが1000未満のユーザーはログインできない可能性があります。