次の方法で共有


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 を割り当てるよりも、そのユーザーのログオン識別子を置き換える方が適切です)。