Bagikan melalui


Keamanan Objek Sinkronisasi dan Hak Akses

Model keamanan Windows memungkinkan Anda mengontrol akses ke objek timer peristiwa, mutex, semaphore, dan waitable. Antrean timer, variabel yang saling diblokir, dan objek bagian penting tidak dapat diamankan. Untuk informasi selengkapnya, lihat Model Kontrol Akses.

Anda dapat menentukan deskriptor keamanan untuk objek sinkronisasi interproses saat Anda memanggil fungsi CreateEvent, CreateMutex, CreateSemaphore, atau CreateWaitableTimer . Jika Anda menentukan NULL, objek akan mendapatkan pendeskripsi keamanan default. Daftar Kontrol Akses (ACL) di deskriptor keamanan default untuk objek sinkronisasi berasal dari token utama atau peniruan dari pembuat.

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

Handel yang dikembalikan oleh CreateEvent, CreateMutex, CreateSemaphore, dan CreateWaitableTimer memiliki akses penuh ke objek baru. Saat Anda memanggil fungsi OpenEvent, OpenMutex, OpenSemaphore, dan OpenWaitableTimer , sistem memeriksa hak akses yang diminta terhadap deskriptor 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 Makna
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 disinyalkan.
WRITE_DAC (0x00040000L) Diperlukan untuk mengubah DACL di deskriptor keamanan untuk objek .
WRITE_OWNER (0x00080000L) Diperlukan untuk mengubah pemilik dalam deskriptor keamanan untuk objek.

 

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

Nilai Makna
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 bahwa aplikasi Anda harus dijalankan oleh Administrator.
EVENT_MODIFY_STATE (0x0002) Ubah akses status, yang diperlukan untuk fungsi SetEvent, ResetEvent , dan PulseEvent .

 

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

Nilai Makna
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 bahwa aplikasi Anda harus dijalankan oleh Administrator.
MUTEX_MODIFY_STATE (0x0001) Disiapkan untuk penggunaan masa mendatang.

 

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

Nilai Makna
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 bahwa aplikasi Anda harus dijalankan oleh Administrator.
SEMAPHORE_MODIFY_STATE (0x0002) Ubah akses status, yang diperlukan untuk fungsi ReleaseSemaphore .

 

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

Nilai Makna
TIMER_ALL_ACCESS (0x1F0003) Semua hak akses yang mungkin 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 bahwa aplikasi Anda harus dijalankan oleh Administrator.
TIMER_MODIFY_STATE (0x0002) Ubah akses status, yang diperlukan untuk fungsi SetWaitableTimer dan CancelWaitableTimer .
TIMER_QUERY_STATE (0x0001) Disiapkan untuk penggunaan masa mendatang.

 

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