SeSetSecurityDescriptorInfoEx 関数 (ntifs.h)

SeSetSecurityDescriptorInfoEx ルーチンは、オブジェクトのセキュリティ記述子を変更し、オブジェクトがアクセス制御エントリ (ACE) の自動継承をサポートするかどうかを指定します。

構文

NTSTATUS SeSetSecurityDescriptorInfoEx(
  [in, optional] PVOID                 Object,
  [in]           PSECURITY_INFORMATION SecurityInformation,
                 PSECURITY_DESCRIPTOR  ModificationDescriptor,
  [in, out]      PSECURITY_DESCRIPTOR  *ObjectsSecurityDescriptor,
  [in]           ULONG                 AutoInheritFlags,
  [in]           POOL_TYPE             PoolType,
  [in]           PGENERIC_MAPPING      GenericMapping
);

パラメーター

[in, optional] Object

セキュリティ記述子を変更するオブジェクトへのポインター。 これは、セキュリティ クォータ情報を更新するために使用されます。

[in] SecurityInformation

設定するセキュリティ情報を指定する値へのポインター。 次の 1 つ以上の組み合わせを使用できます。

説明
DACL_SECURITY_INFORMATION オブジェクトの随意アクセス制御リスト (DACL) が設定されていることを示します。 WRITE_DACアクセスが必要です。
GROUP_SECURITY_INFORMATION オブジェクトのプライマリ グループ識別子が設定されていることを示します。 WRITE_OWNERアクセスが必要です。
OWNER_SECURITY_INFORMATION オブジェクトの所有者識別子が設定されていることを示します。 WRITE_OWNERアクセスが必要です。
SACL_SECURITY_INFORMATION オブジェクトのシステム ACL (SACL) が設定されていることを示します。 ACCESS_SYSTEM_SECURITYアクセスが必要です。

ModificationDescriptor

オブジェクトに適用される入力セキュリティ記述子。 このルーチンの呼び出し元は、呼び出す前に渡されたセキュリティ記述子をプローブしてキャプチャし、呼び出した後に解放することが期待されます。

[in, out] ObjectsSecurityDescriptor

オブジェクトのセキュリティ記述子へのポインターへのポインター。 セキュリティ記述子は自己相対形式である必要があります。 この構造体は、呼び出し元によって割り当てを解除する必要があります。

[in] AutoInheritFlags

ACE の自動継承を制御するビットマスク。 次の 1 つ以上のビット フラグの論理 OR に設定します。

セキュリティ情報フラグ 意味
SEF_DACL_AUTO_INHERIT このフラグが設定されている場合、DACL は自動継承 DACL として扱われ、次の「解説」セクションで説明されているように処理されます。 SecurityInformation パラメーターでDACL_SECURITY_INFORMATIONが設定されていない場合、このビットは無視されます。
SEF_SACL_AUTO_INHERIT このフラグが設定されている場合、SACL は自動継承 SACL として扱われ、次の「解説」セクションで説明されているように処理されます。 SecurityInformation パラメーターでSACL_SECURITY_INFORMATIONが設定されていない場合、このビットは無視されます。

[in] PoolType

新しいセキュリティ記述子を割り当てるときに使用するプールの種類を指定します。次のいずれかになります。

  • NonPagedPool
  • PagedPool
  • NonPagedPoolCacheAligned
  • PagedPoolCacheAligned

通常、IRQL >= DISPATCH_LEVELまたは任意のスレッド コンテキストでバッファーにアクセスする場合、呼び出し元は PagedPool を指定します。それ以外の場合は NonPagedPool を指定します。

NonPagedPoolMustSucceed および NonPagedPoolCacheAlignedMustS プールの種類は古く、使用しないでください。

[in] GenericMapping

アクセスするオブジェクトの特定のアクセス型と標準アクセス型へのジェネリックのマッピングを指定するGENERIC_MAPPING構造体へのポインター。 このマッピング構造は、このルーチンに渡される前に安全にアクセスできる (つまり、必要に応じてキャプチャされる) ことが予想されます。

戻り値

リターン コード 説明
STATUS_SUCCESS オブジェクトのセキュリティ記述子が正常に変更されました。
STATUS_BAD_DESCRIPTOR_FORMAT 指定されたオブジェクトのセキュリティ記述子が自己相対形式ではありません。
STATUS_NO_SECURITY_ON_OBJECT オブジェクトにはセキュリティ記述子がありません。

注釈

AutoInheritFlags パラメーターが 0 の場合、SeSetSecurityDescriptorInfoEx を呼び出した場合の効果は、SeSetSecurityDescriptorInfo を呼び出す場合と同じです。

AutoInheritFlags でSEF_DACL_AUTO_INHERIT ビットが指定されている場合、SeSetSecurityDescriptorInfoEx は DACL に次の規則を適用して、現在の記述子から新しいセキュリティ記述子を作成します。

  • 現在のセキュリティ記述子または入力 SecurityDescriptor の制御ビットでSE_DACL_PROTECTED フラグが設定されていない場合、 SeSetSecurityDescriptorInfoEx は、現在のセキュリティ記述子の継承された ACE と SecurityDescriptor の非継承 ACE から出力セキュリティ記述子を構築します。 つまり、オブジェクトの ACL を変更することで、継承された ACE を変更することはできません。 この動作では、親コンテナーから継承された継承された ACE が保持されます。

  • 入力 SecurityDescriptor でSE_DACL_PROTECTEDが設定されている場合、現在のセキュリティ記述子は無視されます。 出力セキュリティ記述子は、INHERITED_ACE ビットがオフになっている入力 SecurityDescriptor のコピーとして構築されます。

ACL エディターでは、オブジェクトの親から継承された ACE がオブジェクトに明示的に設定されていることを呼び出し元に示すINHERITED_ACE ビットをオフにするのが理想的です。

  • SE_DACL_PROTECTEDが SecurityDescriptor ではなく、現在のセキュリティ記述子で設定されている場合、現在のセキュリティ記述子は無視されます。 出力セキュリティ記述子は、 SecurityDescriptor のコピーとして構築されます。 正しい ACE でINHERITED_ACE ビットがオンになっていることを確認するのは、呼び出し元の責任です。

AutoInheritFlags でSEF_SACL_AUTO_INHERIT ビットが指定されている場合、SeSetSecurityDescriptorInfoEx は新しい SACL に同様の規則を適用します。

アクセス制御と ACE の継承の詳細については、Microsoft Windows SDKドキュメントの「セキュリティ」セクションを参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL

こちらもご覧ください

エース

ACL

GENERIC_MAPPING

RtlCreateSecurityDescriptor

RtlCreateSecurityDescriptorRelative

RtlLengthSecurityDescriptor

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SeQuerySecurityDescriptorInfo

SeSetSecurityDescriptorInfo