2.4 Estruturas de dados: onde estão as permissões?


As explicações dadas até agora referem-se a idéias de como utilizar o sistema de segurança de arquivos. Agora, será mostrado como é armazenada a informação sobre a segurança de um arquivo. Embora uma parte já tenha sido mostrada no início do trabalho (com os exemplos de como usuários e grupos são armazenados), ainda é necessário mostrar como, em cada arquivo, é armazenada a segurança.

Como foi visto no exemplo 3, cada arquivo tem um conjunto de flags que identificam o tipo de acesso que cada usuário pode ter sobre ele. Este conjunto se subdivide em três, cada qual refere-se a um tipo de usuário. Analisando este último grupo, pode-se perceber que ou existe a permissão refente a esta posição (na ordem "rwx") ou existe um "-" para indicar que não há esta permissão. Ou seja, um tipo de permissão "r--" poderia ser representado, em mais baixo nível, como "100" (primeira flag acesa, o restante apagado), utilizando-se uma representação binária para isso. Pois é exatamente o que acontece. O número binário "100", se convertido em octal, é 4, e é exatamente este valor que é armazenado.

No Linux, cada arquivo tem um i-node, onde é armazenada suas informações vitais, tais como localização dos blocos de dados, encadeamento para outro i-node e também o UID e o GID proprietários deste arquivo, bem como qual o tipo de permissão sobre este arquivo.
-rw-rw-r--   1 marcelo tecnnicos 34076 Aug 2 2001 ManualMySQL.txt


Inode: 16068 Type: regular Mode: 0664 Flags: 0x0 Version/Generation: - 1511022763
User: 500 Group: 100 Size: 6
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 8
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x3d886560 -- Wed Sep 18 08:37:04 2002
atime: 0x3d886560 -- Wed Sep 18 08:37:04 2002
mtime: 0x3d886560 -- Wed Sep 18 08:37:04 2002
BLOCKS:
39999
TOTAL: 1

Exemplo 4 - arquivo ManualMySQL.txt e seu i-node

No exemplo 4, é possível visualizar o arquivo ManualMySQL.txt e a estrutura de seu i-node, onde estão contidas várias informações pertinentes a este arquivo. Na primeira linha, existe um número octal identificado como Mode. Convertendo este número para binário, teremos: 0664=0110110100, o que pode ser entendido como -rw-rw-r--, que é o tipo de permissão ao arquivo. Ou seja, para atribuir acesso total para qualquer usuário ao arquivo, basta atribuir a ele o tipo de permissão 777, que em binário é 111111111 ou rwxrwxrwx.

Identificados pelos nomes User e Group, estão o UID e GID aos quais o arquivo pertence.

Cada i-node reserva para o tipo e as permissões do arquivo 2 bytes, para o UID 2 bytes e para o GID, igualmente, 2 bytes.