Resumidamente:
Vamos cobrir as permissões tradicionais primeiro. Em um sistema de arquivos como ext2
e os sucessores, e também no sistema de arquivos original do Unix, existe uma estrutura chamada inode. Ele consiste em um número de bytes que descrevem as propriedades de um arquivo, como onde ele está, o tamanho dele, etc. Os bytes que representam permissões têm bits definidos que correspondem às permissões para o proprietário, o grupo e o restante o mundo. Você pode ver isso em ls -l
, onde os bits mais baixos correspondem diretamente ao rwxr-xr-x
etc. que você vê (de modo que seria o padrão de bits 111101101
). Você também pode vê-lo em comandos como chmod
, onde você usa esse número binário em octal (então os grupos de três bits cada correspondem a um dígito).
Os bytes de permissão são interpretados pelo driver do sistema de arquivos no kernel (basicamente, o kernel usa alguma estrutura de dados C que corresponde à estrutura de dados do inode).
Então, nesse sentido, você pode dizer "as permissões são gerenciadas pelo kernel" e "as permissões são armazenadas no sistema de arquivos".
As ACLs funcionam de forma semelhante, exceto por serem mais flexíveis e usarem uma representação mais difícil e uma API do kernel mais difícil.