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
通常、呼び出し元 PagedPoolを指定するか、IRQL >= DISPATCH_LEVELまたは任意のスレッド コンテキストでバッファーにアクセスする場合は 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 ビットをオフにするのが理想的です。
- SecurityDescriptorではなく、現在のセキュリティ記述子にSE_DACL_PROTECTEDが設定されている場合、現在のセキュリティ記述子は無視されます。 出力セキュリティ記述子は、SecurityDescriptorのコピーとして構築されます。 正しい ACE で INHERITED_ACE ビットがオンになっていることを確認するのは呼び出し元の責任です。
AutoInheritFlags SEF_SACL_AUTO_INHERIT ビットを指定する場合、SeSetSecurityDescriptorInfoEx は、新しい SACL に同様の規則を適用します。
アクセス制御と ACE 継承の詳細については、Microsoft Windows SDK ドキュメントの「セキュリティ」セクションを参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | ntifs.h (Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
関連項目
RtlCreateSecurityDescriptorの
RtlCreateSecurityDescriptorRelativeの
RtlLengthSecurityDescriptorをする
RtlSetDaclSecurityDescriptorの
RtlSetOwnerSecurityDescriptorをする
RtlValidSecurityDescriptorの
SeSetSecurityDescriptorInfoの