O que é responsável pelas permissões de arquivo em um sistema Linux?

0

Sabe-se que a maioria dos sistemas Linux possui algum tipo de permissão de arquivo. Mas o que é responsável por defini-los? O sistema operacional, o sistema de arquivos, outra coisa?

Primeiramente, pensei que é o sistema de arquivos (ext3, NTFS etc.). Isso é sugerido por este artigo da Wikipédia , pois há frases usadas como "permissões do sistema de arquivos". Mas surpreendentemente, no artigo também é mencionado que:

Unix-like and otherwise POSIX-compliant systems, including Linux-based systems and all macOS versions, have a simple system for managing individual file permissions, which in this article are called "traditional Unix permissions".

E isso sugere que as permissões são uma coisa gerenciada pelo sistema operacional (pelo menos sistemas compatíveis com POSIX, o que quer que isso signifique exatamente). Isso também é sugerido por este artigo de linfo sobre permissões de arquivos .

Além disso, esta documentação da Red Hat sobre ACLs diz que:

The Red Hat Enterprise Linux kernel provides ACL support for the ext3 file system and NFS-exported file systems. ACLs are also recognized on ext3 file systems accessed via Samba.

o que sugere que as ACLs - ou seja, um tipo de permissão de arquivo - são de alguma forma definidas no kernel do Linux.

E eu estou confuso sobre isso.

    
por silv 16.10.2018 / 01:39

1 resposta

2

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.

    
por 16.10.2018 / 08:43