O kernel e o sistema de arquivos desempenham um papel. As permissões são armazenadas no sistema de arquivos, portanto, é necessário que haja um local para armazenar as informações no formato do sistema de arquivos. As permissões são aplicadas e comunicadas aos aplicativos pelo kernel, portanto, o kernel deve implementar regras para determinar o que as informações armazenadas no sistema de arquivos significam.
"Permissões de arquivo Unix" referem-se a um sistema de permissão tradicional que envolve três ações (leitura, gravação, execução ) controlado por três tipos de funções (usuário, grupo, outro). O trabalho do sistema de arquivos é armazenar 3 × 3 = 9 bits de informação. O trabalho do kernel é interpretar esses bits como permissões; em particular, quando um processo tenta uma operação em um arquivo, o kernel deve determinar, considerando o usuário e os grupos que o processo está executando, os bits de permissão do arquivo e a operação solicitada, para permitir a operação. (“Permissões de arquivo Unix” também incluem setuid e setgid bits , que não são estritamente permissões.)
Sistemas Unix modernos podem suportar outras formas de permissões. A maioria dos sistemas unix modernos (Solaris, Linux, * BSD) suportam listas de controle de acesso que permitem atribuir permissões de leitura / gravação / execução para mais de um usuário e mais de um grupo para cada arquivo. O sistema de arquivos deve ter espaço para armazenar essas informações extras, e o kernel deve incluir código para procurar e usar essas informações. Ext2, reiserfs, btrfs, zfs e a maioria dos outros formatos modernos de sistemas de arquivos unix definem um local para armazenar tais ACLs. O Mac OS X suporta um conjunto diferente de ACL que incluem permissões não tradicionais como “acrescentar” e “criar subdiretório”; o formato do sistema de arquivos HFS + os suporta. Se você montar um volume HFS + no Linux, essas ACLs não serão aplicadas, já que o kernel do Linux não as suporta.
Por outro lado, existem sistemas operacionais e sistemas de arquivos que não suportam controle de acesso. Por exemplo, FAT e variantes foram criados para sistemas operacionais de usuário único e mídia removível e suas permissões são limitadas a leitura / leitura -Escreva e oculto / visível. Estas são as permissões impostas pelo DOS . Se você montar um sistema de arquivos ext2 no DOS, ele não aplicará as permissões ext2. Por outro lado, se você acessar um sistema de arquivos FAT no Linux, todos os arquivos terão as mesmas permissões.
Versões sucessivas do Windows adicionaram suporte a mais tipos de permissão. O sistema de arquivos NTFS foi estendido para armazenar essas permissões extras. Se você acessar um sistema de arquivos com as permissões mais recentes em um sistema operacional mais antigo, o SO não saberá sobre essas permissões mais recentes e, portanto, não aplicará essas permissões. Por outro lado, se você acessar um sistema de arquivos mais antigo com um sistema operacional mais recente, ele não terá as novas permissões e cabe ao SO fornecer fallbacks sensatos.