Bagikan melalui


Keamanan Objek Sinkronisasi dan Hak Akses

Model keamanan Windows memungkinkan Anda mengontrol akses ke objek peristiwa, mutex, semaphore, dan timer yang dapat ditunda. Antrean timer, variabel yang saling mengunci, dan objek bagian penting tidak dapat diamankan. Untuk informasi selengkapnya, lihat ModelAccess-Control .

Anda dapat menentukan pendeskripsi keamanan untuk objek sinkronisasi antarproses saat Anda memanggilCreateEvent, createMutex, createSemaphore, atau fungsi CreateWaitableTimer. Jika Anda menentukan NULL, objek mendapatkan pendeskripsi keamanan default. Daftar Access-Control (ACL) di deskriptor keamanan default untuk objek sinkronisasi berasal dari token utama atau peniruan identitas pembuat.

Untuk mendapatkan atau mengatur pendeskripsi keamanan objek timer peristiwa, mutex, semaphore, atau waitable, panggil GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, atau SetSecurityInfo functions.

Handel yang dikembalikan oleh CreateEvent, CreateMutex, CreateSemaphore, dan CreateWaitableTimer memiliki akses penuh ke objek baru. Saat Anda memanggil OpenEvent, OpenMutex, openSemaphore, dan fungsi OpenWaitableTimer, sistem memeriksa hak akses yang diminta terhadap pendeskripsi keamanan objek.

Hak akses yang valid untuk objek sinkronisasi antarproses mencakup hak akses standar dan beberapa hak akses khusus objek. Tabel berikut mencantumkan hak akses standar yang digunakan oleh semua objek.

Nilai Arti
HAPUS (0x00010000L) Diperlukan untuk menghapus objek.
READ_CONTROL (0x00020000L) Diperlukan untuk membaca informasi dalam deskriptor keamanan untuk objek, tidak termasuk informasi dalam SACL. Untuk membaca atau menulis SACL, Anda harus meminta hak akses ACCESS_SYSTEM_SECURITY. Untuk informasi selengkapnya, lihat Hak Akses SACL.
SINKRONKAN (0x00100000L) Hak untuk menggunakan objek untuk sinkronisasi. Ini memungkinkan utas untuk menunggu hingga objek dalam status disinyalir.
WRITE_DAC (0x00040000L) Diperlukan untuk mengubah DACL di deskriptor keamanan untuk objek.
WRITE_OWNER (0x00080000L) Diperlukan untuk mengubah pemilik di deskriptor keamanan untuk objek.

 

Tabel berikut mencantumkan hak akses khusus objek untuk objek peristiwa. Hak-hak ini didukung selain hak akses standar.

Nilai Arti
EVENT_ALL_ACCESS (0x1F0003) Semua kemungkinan hak akses untuk objek peristiwa. Gunakan hak ini hanya jika aplikasi Anda memerlukan akses di luar yang diberikan oleh hak akses standar dan EVENT_MODIFY_STATE. Menggunakan hak akses ini meningkatkan kemungkinan aplikasi Anda harus dijalankan oleh Administrator.
EVENT_MODIFY_STATE (0x0002) Ubah akses status, yang diperlukan untuk fungsiSetEvent, ResetEvent danPulseEvent.

 

Tabel berikut mencantumkan hak akses khusus objek untuk objek mutex. Hak-hak ini didukung selain hak akses standar.

Nilai Arti
MUTEX_ALL_ACCESS (0x1F0001) Semua kemungkinan hak akses untuk objek mutex. Gunakan hak ini hanya jika aplikasi Anda memerlukan akses di luar yang diberikan oleh hak akses standar. Menggunakan hak akses ini meningkatkan kemungkinan aplikasi Anda harus dijalankan oleh Administrator.
MUTEX_MODIFY_STATE (0x0001) Dicadangkan untuk digunakan di masa mendatang.

 

Tabel berikut mencantumkan hak akses khusus objek untuk objek semaphore. Hak-hak ini didukung selain hak akses standar.

Nilai Arti
SEMAPHORE_ALL_ACCESS (0x1F0003) Semua kemungkinan hak akses untuk objek semaphore. Gunakan hak ini hanya jika aplikasi Anda memerlukan akses di luar yang diberikan oleh hak akses standar dan SEMAPHORE_MODIFY_STATE. Menggunakan hak akses ini meningkatkan kemungkinan aplikasi Anda harus dijalankan oleh Administrator.
SEMAPHORE_MODIFY_STATE (0x0002) Ubah akses status, yang diperlukan untuk fungsiReleaseSemaphore.

 

Tabel berikut mencantumkan hak akses khusus objek untuk objek timer yang dapat ditunggu. Hak-hak ini didukung selain hak akses standar.

Nilai Arti
TIMER_ALL_ACCESS (0x1F0003) Semua kemungkinan hak akses untuk objek timer yang dapat ditunda. Gunakan hak ini hanya jika aplikasi Anda memerlukan akses di luar yang diberikan oleh hak akses standar dan TIMER_MODIFY_STATE. Menggunakan hak akses ini meningkatkan kemungkinan aplikasi Anda harus dijalankan oleh Administrator.
TIMER_MODIFY_STATE (0x0002) Ubah akses status, yang diperlukan untuk fungsiSetWaitableTimer danCancelWaitableTimer.
TIMER_QUERY_STATE (0x0001) Dicadangkan untuk digunakan di masa mendatang.

 

Untuk membaca atau menulis SACL objek sinkronisasi antarproses, Anda harus meminta hak akses ACCESS_SYSTEM_SECURITY. Untuk informasi selengkapnya, lihat DaftarAccess-Control (ACL) dan Hak Akses SACL.