И ядро, и файловая система играют роль. Разрешения хранятся в файловой системе, поэтому должно быть место для хранения информации в формате файловой системы. Разрешения применяются и передаются ядру приложениям, поэтому ядро должно реализовать правила, чтобы определить, что означает информация, хранящаяся в файловой системе.
«Права доступа к файлам Unix» относятся к традиционной системе разрешений, которая включает в себя три действия (чтение, запись, выполнение), управляемых тремя типами ролей (пользователь, группа, другие). Задача файловой системы - хранить 3 × 3 = 9 бит информации. Задача ядра - интерпретировать эти биты как разрешения; в частности, когда процесс пытается выполнить операцию над файлом, ядро должно определить, учитывая пользователя и группы, в которых выполняется процесс, биты разрешения файла и запрошенную операцию, разрешить ли операцию. («Права доступа к файлам Unix» также обычно включают биты setuid и setgid , которые не являются строго говоря разрешениями.)
Современные системы Unix могут поддерживать другие формы разрешений. Большинство современных систем Unix (Solaris, Linux, * BSD) поддерживают списки контроля доступа, которые позволяют назначать разрешения на чтение / запись / исключение для более чем одного пользователя и более чем одной группы для каждого файла. Файловая система должна иметь место для хранения этой дополнительной информации, а ядро должно включать код для поиска и использования этой информации. Ext2, reiserfs, btrfs, zfs и большинство других современных форматов файловых систем Unix определяют место для хранения таких ACL. Mac OS X поддерживает другой набор ACL, который включает нетрадиционные разрешения, такие как «добавить» и «создать подкаталог»; формат файловой системы HFS + поддерживает их. Если вы смонтируете том HFS + в Linux, эти ACL не будут применены, поскольку ядро Linux не поддерживает их.
И наоборот, существуют операционные системы и файловые системы, которые не поддерживают управление доступом. Например, FAT и варианты были разработаны для однопользовательских операционных систем и съемных носителей, и его разрешения ограничены чтением / чтением-записью и скрытым / видимым. Это разрешения, введенные DOS . Если вы смонтируете файловую систему ext2 в DOS, она не будет применять разрешения ext2. И наоборот, если вы обращаетесь к файловой системе FAT в Linux, все файлы будут иметь одинаковые разрешения.
В последующих версиях Windows добавлена поддержка большего количества типов разрешений. Файловая система NTFS была расширена для хранения этих дополнительных разрешений. Если вы обращаетесь к файловой системе с более новыми разрешениями в более старой операционной системе, ОС не будет знать об этих более новых разрешениях и не будет применять их. И наоборот, если вы обращаетесь к более старой файловой системе с более новой операционной системой, она не будет содержать новых разрешений, и это зависит от ОС, чтобы обеспечить разумные отступления.