RHEL5+で高いUID番号(3000+)を使用することについて懸念がありますか?

RHEL5+で高いUID番号(3000+)を使用することについて懸念がありますか?

既存システムのUID番号は最大2000程度でした。新しいユーザー管理システムを実装するときにUIDの競合を回避するためのオプションを調査中です。

1つのオプションは、再割り当てできないUIDのリストを持つことです。現在、この問題を調査中です。

別の簡単なオプションは、より高い範囲(3000+)を使用することです。心に留めておくべき質問はありますか?

これはRHEL5、RHEL6、RHEL7で動作します。

答え1

すべてのUnixシステムには、0(ルート用に予約済み)から65535(無効な値に予約済み)の範囲にある少なくとも16桁のユーザーIDがあります。多くの最新バージョン(Linuxを含む)はより大きな値をサポートしますが、混在ネットワークでは、すべてのオペレーティングシステム、ファイルシステム、およびネットワークプロトコルがそれらをサポートしているかどうかわからない限り(以前のNFSではサポートされていない)、これを避けるべきです。 Unixの世界には一般的なルールがあります。 「小さい」値はシステム用で、「大きい」値は管理者用です。 「コンパクト」と「ラージ」の明確な定義はありません。しきい値は通常100、1000、またはその間です。また、慣例上、65534は、ファイルを所有せずにシステムサービスを実行していないユーザーです(世界中からアクセス可能なファイルのみをインデックス化する実装など、権限のない操作nobodyに使用されます)。locate

その結果、1000~65533の値はすべて安全です。これはグループIDにも適用されます。

ネットワークでは、システム固有のアカウントにこの範囲の低い部分を使用し、ネットワーク全体のアカウントに高い部分を使用するのが一般的です。複数の組織でユーザーアカウントを作成する場合は、10000〜19999、20000〜29999などのさまざまな範囲を使用できます。あなたの場合、既存のシステムの場合は1000〜2999の範囲、新しいシステムの場合は3000〜4999の範囲を決定できます。または、既存のシステムの場合は1000〜9999、新しいシステムの場合は10000〜19999です。

答え2

Linuxカーネル2.6以降では、符号なし32ビット整数をUIDとGIDでサポートしています。つまり、RHEL4+の最大UIDは4294967294(4294967295は予約済み)でなければなりませんが、これはシステム設定およびインストールされたユーティリティ、特にShadow-utilsによって異なります。大きなUIDを試してテストできます。起こる唯一のことは、UIDが拒否されることです(RHEL5から65536から4294967294までのすべてを試してください)。 RHEL6 では、4294967294 より高い値は拒否されます。

# useradd -u 4294967295 test
useradd: invalid user ID '4294967295'

RHEL6およびRHEL7ユーティリティは32ビットを絶対にサポートします。まだRHEL5にあるボックスがないので、RHEL5について話すことはできません。

したがって、可能な衝突を避けることが目標である場合は、100000のような値から始めることをお勧めします。

追加情報: 最新のカーネルバージョンでは、ユーザーの名前空間と権限のないコンテナ(docker、openvz、およびlxcを参照)のおかげで、40億のUIDを使用することはそれほど難しくありません。私の知る限り、RHELはまだユーザーネームスペースをサポートしていませんが、RHEL7はユーザーネームスペースをサポートする計画を発表したので、すぐにバックポートされると予想されます。

関連情報