Baik kernel dan sistem file memainkan peran. Izin disimpan dalam sistem file, sehingga perlu ada tempat untuk menyimpan informasi dalam format sistem file. Izin ditegakkan dan dikomunikasikan ke aplikasi oleh kernel, sehingga kernel harus menerapkan aturan untuk menentukan apa artinya informasi yang tersimpan dalam sistem file.
"Izin file Unix" merujuk pada sistem izin tradisional yang melibatkan tiga tindakan (baca, tulis, jalankan) yang dikendalikan melalui tiga tipe peran (pengguna, grup, lainnya). Tugas filesystem adalah menyimpan 3 × 3 = 9 bit informasi. Tugas kernel adalah menafsirkan bit-bit ini sebagai izin; khususnya, ketika suatu proses mencoba operasi pada suatu file, kernel harus menentukan, mengingat pengguna dan grup bahwa proses itu berjalan, bit izin file, dan operasi yang diminta, apakah akan mengizinkan operasi. ("Izin file Unix" juga biasanya termasuk bit setuid dan setgid , yang tidak sepenuhnya merupakan izin.)
Sistem unix modern dapat mendukung bentuk izin lainnya. Sebagian besar sistem unix modern (Solaris, Linux, * BSD) mendukung daftar kontrol akses yang memungkinkan pemberian izin baca / tulis / excecute untuk lebih dari satu pengguna dan lebih dari satu grup untuk setiap file. Sistem file harus memiliki ruang untuk menyimpan informasi tambahan ini, dan kernel harus menyertakan kode untuk mencari dan menggunakan informasi ini. Ext2, reiserfs, btrfs, zfs, dan sebagian besar format sistem file unix modern lainnya menentukan tempat untuk menyimpan ACL tersebut. Mac OS X mendukung serangkaian ACL yang berbeda yang mencakup izin non-tradisional seperti "append" dan "create subdirectory"; format sistem file HFS + mendukungnya. Jika Anda memasang volume HFS + di Linux, ACL ini tidak akan diberlakukan karena kernel Linux tidak mendukungnya.
Sebaliknya, ada sistem operasi dan sistem file yang tidak mendukung kontrol akses. Sebagai contoh, FAT dan varian dirancang untuk sistem operasi pengguna tunggal dan media yang dapat dilepas dan izinnya terbatas untuk membaca / membaca-menulis dan disembunyikan / terlihat. Ini adalah izin yang diberlakukan oleh DOS . Jika Anda memasang sistem file ext2 pada DOS, itu tidak akan memberlakukan izin ext2. Sebaliknya, jika Anda mengakses sistem file FAT di Linux, semua file akan memiliki izin yang sama.
Versi Windows yang berurutan telah menambahkan dukungan untuk lebih banyak jenis izin. Sistem file NTFS diperluas untuk menyimpan izin tambahan tersebut. Jika Anda mengakses sistem file dengan izin yang lebih baru pada sistem operasi yang lebih lama, OS tidak akan tahu tentang izin yang lebih baru ini dan karenanya tidak akan menegakkan mereka. Sebaliknya, jika Anda mengakses sistem file yang lebih lama dengan sistem operasi yang lebih baru, itu tidak akan berisi izin baru dan terserah pada OS untuk memberikan cadangan yang masuk akal.
Dalam rangka untuk pengguna hak-hak tertentu baik kernel dan filesystem harus mendukung mereka. Jika filesystem bahkan tidak mendukung hak akses paling dasar maka kode filesystem harus memalsunya (misalnya dengan opsi mount
umask
untuk vfat).sumber
Pemahaman saya adalah bahwa kernel mengimplementasikan inode di VFS. inode berisi informasi izin (UNIX dan ACL) bersama dengan metadata lain dan sistem file dapat memperluas inode untuk menambahkan fitur. Jika Anda tertarik, baca di Linux VFS - hal-hal berdarah jika Anda bukan seorang programmer sistem.
sumber
Sebagai aturan umum, izin file dan atribut file disimpan ke filesistem [cara yang tepat tergantung pada filesystem yang bersangkutan (ext3 / 4, riser, NTFS dll ...)] tetapi digunakan oleh kernel, biasanya untuk menegakkan sesuatu.
Sebagai contoh Kernel di * nix like sistema adalah "the thing" yang mengetahui arti dari UID yang terkait dengan file / direktori. File UID hanyalah sebuah nomor yang disimpan di samping file tertentu oleh sistem file tetapi "terjemahan" nomor tersebut ke pengguna tertentu (dan hak terkait untuk melakukan sesuatu atau tidak) dilakukan oleh kernel.
sumber