SECURITY_DESCRIPTOR_CONTROL

SECURITY_DESCRIPTOR_CONTROL 型は、SECURITY_DESCRIPTOR 構造体またはそのコンポーネントの意味を修飾するビット フラグのセットです。 各セキュリティ記述子には、SECURITY_DESCRIPTOR_CONTROL ビットを格納する「コントロール」メンバーがあります。

typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;

コントロール値には、次の SECURITY_DESCRIPTOR_CONTROL ビット フラグの組み合わせを含めることができます。

Value 意味
SE_OWNER_DEFAULTED (0x0001) セキュリティ記述子の元のプロバイダーではなく、既定のメカニズムによって、セキュリティ記述子の所有者セキュリティ識別子 (SID) が提供されます。 このフラグを設定するには、RtlSetOwnerSecurityDescriptor を使用します。
SE_GROUP_DEFAULTED (0x0002) セキュリティ記述子の元のプロバイダーではなく、既定のメカニズムによって、セキュリティ記述子のグループの SID が提供されます。
SE_DACL_PRESENT (0x0004) DACL を持つセキュリティ記述子を示します。 このフラグが設定されていない場合、またはこのフラグが設定されていて DACL が NULL の場合、セキュリティ記述子はすべてのユーザーにフル アクセスを許可します。 このフラグは、セキュリティ記述子がセキュリティ保護可能なオブジェクトに関連付けられるまで、呼び出し元によって指定されたセキュリティ情報を保持するために使用されます。 セキュリティ記述子がセキュリティ保護可能なオブジェクトに関連付けられると、セキュリティ記述子制御には常に SE_DACL_PRESENT フラグが設定されます。 このフラグを設定するには、RtlSetDaclSecurityDescriptor を使用します。
SE_DACL_DEFAULTED (0x0008) 既定の DACL を持つセキュリティ記述子を示します。 たとえば、オブジェクトの作成者が DACL を指定しない場合、オブジェクトは作成者のアクセス トークンから既定の DACL を受け取ります。 このフラグは、ACE 継承に関して、システムが DACL を処理する方法に影響を与える可能性があります。 SE_DACL_PRESENT フラグが設定されていない場合、システムはこのフラグを無視します。 このフラグは、オブジェクトの最終的な DACL の計算方法を決定するために使用され、セキュリティ保護可能なオブジェクトのセキュリティ記述子コントロールに物理的に格納されません。 このフラグを設定するには、RtlSetDaclSecurityDescriptor を使用します。
SE_SACL_PRESENT (0x0010) SACL を持つセキュリティ記述子を示します。
SE_SACL_DEFAULTED (0x0020) セキュリティ記述子の元のプロバイダーではなく、既定のメカニズムが SACL を提供しました。 このフラグは、ACE 継承に関して、システムが SACL を処理する方法に影響を与える可能性があります。 SE_SACL_PRESENT フラグが設定されていない場合、システムはこのフラグを無視します。
SE_DACL_UNTRUSTED (0x0040) セキュリティ記述子の DACL が指す ACL が信頼されていないソースによって提供されたことを示します。 このフラグが設定され、複合 ACE が検出された場合、システムは ACE 内のサーバー SID の既知の有効な SID を置き換えます。
SE_SERVER_SECURITY (0x0080) ソース (明示的または既定) に関係なく、ACL が入力 ACL に基づいてサーバー ACL である必要があるセキュリティ記述子によって保護されるオブジェクトのプロバイダーを要求します。 これを行うには、すべての GRANT ACE を、現在のサーバーを許可する複合 ACE に置き換えます。 このフラグは、件名が偽装している場合にのみ意味があります。
SE_DACL_AUTO_INHERIT_REQ (0x0100) セキュリティ記述子によって保護されているオブジェクトのプロバイダーが、DACL を既存の子オブジェクトに自動的に伝達するように要求します。 プロバイダーが自動継承をサポートしている場合、DACL は既存の子オブジェクトに伝達され、SE_DACL_AUTO_INHERITED ビットが設定されます。
SE_SACL_AUTO_INHERIT_REQ (0x0200) セキュリティ記述子によって保護されているオブジェクトのプロバイダーが、SACL を既存の子オブジェクトに自動的に伝達するように要求します。 プロバイダーが自動継承をサポートしている場合、SACL は既存の子オブジェクトに伝達され、SE_SACL_AUTO_INHERITED ビットが設定されます。
SE_DACL_AUTO_INHERITED (0x0400) Windows 2000 以降では、DACL が既存の子オブジェクトへの継承可能な ACE の自動伝達をサポートするセキュリティ記述子を示します。 自動暗号化をサポートする Windows 2000 ACL の場合、このビットは常に設定されます。 これらの ACL は、自動暗号化をサポートしていない Windows NT 4.0 ACL と区別するために使用されます。 このビットは、継承可能な ACE の自動伝達をサポートしていない Windows NT 4.0 以前のセキュリティ記述子では設定されていません。
SE_SACL_AUTO_INHERITED (0x0800) SACL が既存の子オブジェクトへの継承可能な ACE の自動伝達をサポートするセキュリティ記述子を示します。 このビットは、オブジェクトとその既存の子オブジェクトに対して自動継承アルゴリズムが実行された場合にのみ設定されます。 このビットは、継承可能な ACE の自動伝達をサポートしていなかった Windows NT 4.0 以前のセキュリティ記述子では設定されていません。
SE_DACL_PROTECTED (0x1000) セキュリティ記述子の DACL が継承可能な ACE によって変更されないように保護します。
SE_SACL_PROTECTED (0x2000) セキュリティ記述子の SACL が継承可能な ACE によって変更されないように保護します。
SE_RM_CONTROL_VALID (0x4000) セキュリティ記述子のリソース 制御マネージャー ビットが有効であることを示します。 Resource Manager 制御ビットは、SECURITY_DESCRIPTOR 構造体の Sbz1 メンバーの 8 ビットで、その構造体にアクセスする「リソース マネージャー」に固有の情報を含みます。 詳細については、Windows SDK を参照してください。
SE_SELF_RELATIVE (0x8000) 連続したメモリ ブロック内のすべてのセキュリティ情報を含む自己相対形式のセキュリティ記述子を示します。 このフラグが設定されていない場合、セキュリティ記述子は絶対形式になります。 詳細については、Windows SDK ドキュメントを参照してください。

要件

ntifs.h (ntifs.h を含む)

ACE

ACL

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

SECURITY_DESCRIPTOR