Bagikan melalui


Fungsi SeSetSecurityDescriptorInfoEx (ntifs.h)

Rutinitas SeSetSecurityDescriptorInfoEx memodifikasi deskriptor keamanan objek dan menentukan apakah objek mendukung pewarisan otomatis entri kontrol akses (ACE).

Sintaks

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
);

Parameter

[in, optional] Object

Penunjuk ke objek yang deskriptor keamanannya akan dimodifikasi. Ini digunakan untuk memperbarui informasi kuota keamanan.

[in] SecurityInformation

Penunjuk ke nilai yang menentukan informasi keamanan mana yang akan diatur. Dapat berupa kombinasi dari satu atau beberapa hal berikut ini.

Nilai Makna
DACL_SECURITY_INFORMATION Menunjukkan daftar kontrol akses diskresi (DACL) objek sedang diatur. Membutuhkan akses WRITE_DAC.
GROUP_SECURITY_INFORMATION Menunjukkan pengidentifikasi grup utama objek sedang diatur. Membutuhkan akses WRITE_OWNER.
OWNER_SECURITY_INFORMATION Menunjukkan pengidentifikasi pemilik objek sedang diatur. Membutuhkan akses WRITE_OWNER.
SACL_SECURITY_INFORMATION Menunjukkan sistem ACL (SACL) objek sedang diatur. Membutuhkan akses ACCESS_SYSTEM_SECURITY.

ModificationDescriptor

Pendeskripsi keamanan input yang akan diterapkan ke objek. Penelepon rutin ini diharapkan untuk memeriksa dan menangkap pendeskripsi keamanan yang diteruskan sebelum memanggil, dan melepaskannya setelah memanggil.

[in, out] ObjectsSecurityDescriptor

Arahkan ke penunjuk ke deskriptor keamanan objek. Deskriptor keamanan harus dalam format relatif mandiri. Struktur ini harus dibatalkan alokasinya oleh pemanggil.

[in] AutoInheritFlags

Bitmask yang mengontrol pewarisan otomatis ACE. Atur ke LOGICAL OR dari satu atau beberapa bendera bit berikut:

Bendera Informasi Keamanan Makna
SEF_DACL_AUTO_INHERIT Jika bendera ini diatur, DACL diperlakukan sebagai DACL pewarisan otomatis dan diproses seperti yang dijelaskan di bagian Keterangan berikut. Bit ini diabaikan jika DACL_SECURITY_INFORMATION tidak diatur dalam parameter SecurityInformation .
SEF_SACL_AUTO_INHERIT Jika bendera ini diatur, SACL diperlakukan sebagai SACL yang diwarisi secara otomatis dan diproses seperti yang dijelaskan di bagian Keterangan berikut. Bit ini diabaikan jika SACL_SECURITY_INFORMATION tidak diatur dalam parameter SecurityInformation .

[in] PoolType

Menentukan jenis kumpulan yang akan digunakan saat mengalokasikan deskriptor keamanan baru, yang bisa menjadi salah satu dari berikut ini:

  • NonPagedPool
  • PagedPool
  • NonPagedPoolCacheAligned
  • PagedPoolCacheAligned

Biasanya, pemanggil menentukan PagedPool, atau NonPagedPool jika buffer akan diakses di IRQL >= DISPATCH_LEVEL atau dalam konteks utas arbitrer.

Jenis kumpulan NonPagedPoolMustSucceed dan NonPagedPoolCacheAlignedMustS sudah usang dan tidak boleh lagi digunakan.

[in] GenericMapping

Penunjuk ke struktur GENERIC_MAPPING yang menentukan pemetaan generik ke jenis akses tertentu dan standar untuk objek yang diakses. Struktur pemetaan ini diharapkan aman untuk diakses (yaitu, ditangkap jika perlu) sebelum diteruskan ke rutinitas ini.

Nilai kembali

Menampilkan kode Deskripsi
STATUS_SUCCESS Deskriptor keamanan objek berhasil dimodifikasi.
STATUS_BAD_DESCRIPTOR_FORMAT Deskriptor keamanan objek yang disediakan tidak dalam format relatif mandiri.
STATUS_NO_SECURITY_ON_OBJECT Objek tidak memiliki pendeskripsi keamanan.

Keterangan

Jika parameter AutoInheritFlags adalah nol, efek memanggil SeSetSecurityDescriptorInfoEx sama dengan memanggil SeSetSecurityDescriptorInfo.

Jika AutoInheritFlags menentukan bit SEF_DACL_AUTO_INHERIT, SeSetSecurityDescriptorInfoEx menerapkan aturan berikut ke DACL untuk membuat deskriptor keamanan baru dari deskriptor saat ini:

  • Jika bendera SE_DACL_PROTECTED tidak diatur dalam bit kontrol deskriptor keamanan saat ini atau input SecurityDescriptor, SeSetSecurityDescriptorInfoEx membangun pendeskripsi keamanan output dari ACE yang diwariskan dari deskriptor keamanan saat ini dan ASE yang tidak diwariskan dari SecurityDescriptor. Artinya, tidak mungkin untuk mengubah ACE yang diwariskan dengan mengubah ACL pada objek. Perilaku ini mempertahankan ACE yang diwariskan saat diwarisi dari kontainer induk.

  • Jika SE_DACL_PROTECTED diatur dalam input SecurityDescriptor, deskriptor keamanan saat ini diabaikan. Deskriptor keamanan output dibangun sebagai salinan input SecurityDescriptor dengan bit INHERITED_ACE dimatikan.

Idealnya editor ACL harus menonaktifkan bit INHERITED_ACE yang menunjukkan kepada pemanggilnya bahwa ACE yang diwarisi dari induk objek sekarang sedang diatur secara eksplisit pada objek.

  • Jika SE_DACL_PROTECTED diatur dalam deskriptor keamanan saat ini dan bukan di SecurityDescriptor, deskriptor keamanan saat ini diabaikan. Deskriptor keamanan output dibuat sebagai salinan SecurityDescriptor. Adalah tanggung jawab pemanggil untuk memastikan bahwa ACE yang benar mengaktifkan bit INHERITED_ACE.

Jika AutoInheritFlags menentukan bit SEF_SACL_AUTO_INHERIT, SeSetSecurityDescriptorInfoEx menerapkan aturan serupa ke SACL baru.

Untuk informasi selengkapnya tentang kontrol akses dan pewarisan ACE, lihat bagian Keamanan dari dokumentasi Microsoft Windows SDK.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000
Target Platform Universal
Header ntifs.h (termasuk Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Lihat juga

ACE

ACL

GENERIC_MAPPING

RtlCreateSecurityDescriptor

RtlCreateSecurityDescriptorRelative

RtlLengthSecurityDescriptor

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SeQuerySecurityDescriptorInfo

SeSetSecurityDescriptorInfo