Bagikan melalui


Masker Akses

Fungsi masker akses adalah untuk menggambarkan hak akses dalam bentuk ringkas. Untuk menyederhanakan manajemen akses, masker akses berisi sekumpulan empat bit, hak generik, yang diterjemahkan ke dalam serangkaian hak yang lebih rinci dengan menggunakan fungsi RtlMapGenericMask.

Gambar berikut mengilustrasikan masker akses.

diagram yang mengilustrasikan masker akses.

Hak generik adalah salah satu hal berikut:

  • GENERIC_READ—hak untuk membaca informasi yang dikelola oleh objek.

  • GENERIC_WRITE—hak untuk menulis informasi yang dikelola oleh objek.

  • GENERIC_EXECUTE—hak untuk mengeksekusi atau melihat objek secara alternatif.

  • GENERIC_ALL—hak untuk membaca, menulis, dan menjalankan objek.

Perhatikan bahwa hak-hak ini dapat digabungkan (GENERIC_READ dan GENERIC_WRITE keduanya dapat diminta, misalnya) dengan pemetaan yang dihasilkan yang memerlukan penyatuan hak yang diperlukan untuk setiap hak generik. Paradigma ini menirukan bit akses UNIX "rwx" yang digunakan untuk mengontrol akses ke sumber daya UNIX. Hak generik dalam masker akses menyederhanakan pengembangan aplikasi pada Windows karena hak-hak ini menutupi hak keamanan yang berbeda untuk berbagai jenis objek.

Set hak standar berikut berlaku untuk semua jenis objek:

  • DELETE—hak untuk menghapus objek tertentu.

  • READ_CONTROL—hak untuk membaca informasi kontrol (keamanan) untuk objek.

  • WRITE_DAC—hak untuk mengubah informasi kontrol (keamanan) untuk objek.

  • WRITE_OWNER—hak untuk mengubah SID pemilik objek. Ingat bahwa pemilik selalu memiliki hak untuk memodifikasi objek.

  • SYNCHRONIZE—hak untuk menunggu pada objek yang diberikan (dengan asumsi bahwa ini adalah konsep yang valid untuk objek).

16 bit bawah masker akses mewakili hak tertentu. Arti dari hak-hak khusus ini unik untuk objek yang dimaksud. Untuk sistem file, kepentingan utama adalah hak khusus untuk objek file. Untuk objek file, hak tertentu biasanya ditafsirkan secara berbeda, tergantung pada apakah objek file mewakili file atau direktori. Untuk file, interpretasi normalnya adalah:

  • FILE_READ_DATA—hak untuk membaca data dari file yang diberikan.

  • FILE_WRITE_DATA—hak untuk menulis data ke file yang diberikan (dalam rentang file yang ada).

  • FILE_APPEND_DATA—hak untuk memperluas file yang diberikan.

  • FILE_READ_EA—hak untuk membaca atribut file yang diperluas.

  • FILE_WRITE_EA—hak untuk mengubah atribut file yang diperluas.

  • FILE_EXECUTE—hak untuk menjalankan file yang diberikan secara lokal. Menjalankan file yang disimpan di berbagi jarak jauh memerlukan izin baca, karena file dibaca dari server, tetapi dijalankan pada klien.

  • FILE_READ_ATTRIBUTES—hak untuk membaca informasi atribut file.

  • FILE_WRITE_ATTRIBUTES—hak untuk mengubah informasi atribut file.

Untuk direktori, nilai bit yang sama digunakan, tetapi interpretasinya berbeda dalam beberapa kasus berikut:

  • FILE_LIST_DIRECTORY—hak untuk mencantumkan konten direktori.

  • FILE_ADD_FILE—hak untuk membuat file baru dalam direktori.

  • FILE_ADD_SUBDIRECTORY—hak untuk membuat direktori baru (subdirektori) dalam direktori.

  • FILE_READ_EA—hak untuk membaca atribut yang diperluas dari direktori yang diberikan.

  • FILE_WRITE_EA—hak untuk menulis atribut yang diperluas dari direktori yang diberikan.

  • FILE_TRAVERSE—hak untuk mengakses objek dalam direktori. Hak akses FILE_TRAVERSE berbeda dari hak akses FILE_LIST_DIRECTORY. Memegang hak akses FILE_LIST_DIRECTORY memungkinkan entitas untuk mendapatkan daftar konten direktori, sementara hak akses FILE_TRAVERSE memberi entitas hak untuk mengakses objek. Penelepon tanpa hak akses FILE_LIST_DIRECTORY dapat membuka file yang sudah ada, tetapi tidak akan dapat memperoleh daftar konten direktori.

  • FILE_DELETE_CHILD—hak untuk menghapus file atau direktori dalam direktori saat ini.

  • FILE_READ_ATTRIBUTES—hak untuk membaca informasi atribut direktori.

  • FILE_WRITE_ATTRIBUTES—hak untuk mengubah informasi atribut direktori.

Pemetaan aktual hak generik atas hak standar dan khusus untuk objek file ditentukan oleh manajer I/O. Pemetaan ini dapat diambil oleh sistem file menggunakan IoGetFileObjectGenericMapping. Biasanya, pemetaan ini dilakukan selama pemrosesan IRP_MJ_CREATE oleh manajer I/O sebelum memanggil sistem file. Tetapi ini mungkin dilakukan oleh sistem file yang memeriksa keamanan pada operasi tertentu (operasi FSCTL khusus, misalnya).