Posix 識別子のマッピング
Posix サブシステムは、検出された セキュリティ識別子 (SID) を Posix ID と呼ばれる 32 ビット値に変換できる必要があります。 さらに、ID をユーザー ID またはグループ ID として分類できる必要があります。 このマッピングがどのように実現されるかを理解するために、まずマップする必要がある SID を見てみましょう。
SID には、ドメインの SID と、ドメイン内のアカウントの相対 ID という 2 つのコンポーネントがあります。 たとえば、SID S-1-518364-21-43-8 では、最後の数値 8 はアカウントの相対 ID (RID) で、S-1-518364-21-43 はドメインの SID です。
ドメイン情報は TrustedDomain オブジェクトに格納されます。 TrustedDomain オブジェクトに格納されている情報の一部は、そのドメイン内の SID に使用される Posix ID オフセットです。 たとえば、 TrustedDomain が次のように定義されているとします。
Name: NtPgm
Sid: S-1-518364-21-43
Posix Offset: 0x130000
このドメイン内のアカウントの Posix ID は、アカウントの相対 ID に0x130000を追加することによって生成されます。 そのため、SID S-1-518364-21-43-8 に対応する Posix ID が0x130008されます。
すべての Posix ID 変換で TrustedDomain オブジェクトが使用されるわけではありません。 次の表は、既知のオフセット値を使用してマップされる SID を示しています。
source | Posix ID オフセット |
---|---|
組み込みドメインからの SID | 0x20000 |
アカウント ドメインからの SID | 0x30000 |
プライマリ ドメインからの SID (ワークステーション上のみ) | 0x40000 |
最後に、もう 1 つの SID セットであるログオン SID には、特別な処理が必要です。 これらの値は、ログオン セッションごとに Windows ログオン プロセスによって割り当てられ、S-1-5-5-X-Y という形式になります。X と Y は、ログオン セッションごとに増分される単一のLARGE_INTEGERとして扱われます。 これらの SID は、定数 Posix ID 0xFFFにマップされます。 Posix ID 0xFFFをマップするには、状況に最も適した ログオン識別子 を翻訳するか、既定で S-1-5-5-0-0 を使用できます。 (たとえば、posix ユーザーがオブジェクトに保護を適用し、FFFx を指定した場合、単に S-1-5-5-0-0 を割り当てるよりも、そのユーザーのログオン識別子を置き換える方が適切です)。