Fungsi SeAssignSecurity (wdm.h)

Rutinitas SeAssignSecurity membangun deskriptor keamanan relatif mandiri untuk objek baru, mengingat pendeskripsi keamanan direktori induknya dan keamanan yang awalnya diminta untuk objek tersebut.

Sintaks

NTSTATUS SeAssignSecurity(
  [in, optional] PSECURITY_DESCRIPTOR      ParentDescriptor,
  [in, optional] PSECURITY_DESCRIPTOR      ExplicitDescriptor,
  [out]          PSECURITY_DESCRIPTOR      *NewDescriptor,
  [in]           BOOLEAN                   IsDirectoryObject,
  [in]           PSECURITY_SUBJECT_CONTEXT SubjectContext,
  [in]           PGENERIC_MAPPING          GenericMapping,
  [in]           POOL_TYPE                 PoolType
);

Parameter

[in, optional] ParentDescriptor

Penunjuk ke buffer yang berisi SECURITY_DESCRIPTOR untuk direktori induk, jika ada, yang berisi objek baru yang sedang dibuat. ParentDescriptor bisa NULL, atau memiliki daftar kontrol akses sistem NULL (SACL) atau daftar kontrol akses diskresi NULL (DACL).

[in, optional] ExplicitDescriptor

Penunjuk ke buffer yang berisi SECURITY_DESCRIPTOR yang ditentukan oleh pengguna yang diterapkan ke objek baru. ExplicitDescriptor dapat berupa NULL, atau memiliki NULL SACL atau NULL DACL.

[out] NewDescriptor

Menerima penunjuk ke SECURITY_DESCRIPTOR yang dikembalikan. SeAssignSecurity mengalokasikan buffer dari kumpulan memori halaman.

[in] IsDirectoryObject

Menentukan apakah objek baru adalah objek direktori. TRUE menunjukkan objek berisi objek lain.

[in] SubjectContext

Penunjuk ke buffer yang berisi konteks keamanan subjek yang membuat objek. Ini digunakan untuk mengambil informasi keamanan default untuk objek baru, seperti pemilik default, grup utama, dan kontrol akses diskresi.

[in] GenericMapping

Arahkan ke struktur GENERIC_MAPPING yang menjelaskan pemetaan dari setiap hak generik ke hak nongenerik tersirat.

[in] PoolType

Parameter ini tidak digunakan. Buffer untuk menahan deskriptor keamanan baru selalu dialokasikan dari kumpulan halaman.

Nilai kembali

SeAssignSecurity dapat mengembalikan salah satu hal berikut ini:

Menampilkan kode Deskripsi
STATUS_SUCCESS
Penugasan berhasil.
STATUS_INVALID_OWNER
SID yang disediakan untuk pemilik deskriptor keamanan target bukan salah satu pemanggil yang berwenang untuk ditetapkan sebagai pemilik objek.
STATUS_PRIVILEGE_NOT_HELD
Pemanggil tidak memiliki hak istimewa (SeSecurityPrivilege) yang diperlukan untuk secara eksplisit menetapkan ACL sistem yang ditentukan.

Keterangan

Deskriptor keamanan akhir yang dikembalikan ke pemanggil mungkin berisi campuran informasi, beberapa secara eksplisit disediakan dari induk objek baru.

SeAssignSecurity mengasumsikan pemeriksaan hak istimewa belum dilakukan. Rutinitas ini melakukan pemeriksaan hak istimewa.

Penugasan ACL sistem dan diskresi diatur oleh logika yang diilustrasikan dalam tabel berikut:

ACL eksplisit (nondefault) ditentukan ACL default eksplisit ditentukan Tidak ada ACL yang ditentukan
ACL yang dapat diwariskan dari induk Menetapkan ACL yang ditentukan Menetapkan ACL yang diwariskan Menetapkan ACL yang diwariskan
Tidak ada ACL yang dapat diwariskan dari induk Menetapkan ACL yang ditentukan Menetapkan ACL default Tidak menetapkan ACL
 

ACL yang ditentukan secara eksplisit, baik ACL default atau tidak, dapat kosong atau null. Pemanggil harus merupakan klien mode kernel atau memiliki hak istimewa yang tepat untuk secara eksplisit menetapkan ACL sistem default atau nondefault.

Penetapan pemilik dan grup objek baru diatur oleh logika berikut:

  • Jika deskriptor keamanan yang diteruskan menyertakan pemilik, deskriptor tersebut ditetapkan sebagai pemilik objek baru. Jika tidak, token penelepon dianggap menentukan pemiliknya. Dalam token, pemilik default, jika ada, ditetapkan. Jika tidak, ID pengguna penelepon ditetapkan.
  • Jika deskriptor keamanan yang diteruskan menyertakan grup, pendeskripsi tersebut ditetapkan sebagai grup objek baru. Jika tidak, token penelepon dianggap menentukan grup. Dalam token, grup default, jika ada, ditetapkan. Jika tidak, ID grup utama penelepon ditetapkan.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia di Windows 2000 dan versi Windows yang lebih baru.
Target Platform Universal
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)
Pustaka NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Aturan kepatuhan DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Lihat juga

GENERIC_MAPPING

IoGetFileObjectGenericMapping

SECURITY_DESCRIPTOR

SeDeassignSecurity