
Entendo que existem 12 bits de permissão, dos quais existem 3 grupos de 3 bits para cada usuário, grupo e outros, que são RWX respectivamente. RW são de leitura e gravação, mas para X é search
para diretórios e execute
arquivos.
Aqui está o que eu não entendo:
Quais são os 3 bits de modo restantes e todos eles estão armazenados no inode?
Eu sei que o diretório de arquivos em si também é considerado um arquivo, já que todas as coisas no UNIX são arquivos (isso é verdade?), mas como os sistemas UNIX usam ACL para representar o sistema de arquivos, então o sistema de arquivos é uma lista de filename-inode_number pares. Onde um diretório de arquivos armazena seu próprio número de inode e nome de arquivo?
Responder1
stat /bin/su
mostra em um sistema:
Access: (4755/-rwsr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Existe a representação octal 4755
de todos os 12 bits de modo. O número corresponde aos bits:
octal 4 7 5 5
bits 100 111 101 101
sst uuu ggg ooo
ug rwx rwx rwx
Onde uuu
, ggg
e ooo
são os bits de permissão para o usuário, grupo e outros. O grupo restante (o primeiro em ordem) contém os bits setuid ( su
), setgid ( sg
) e sticky ( ).t
Os bits setuid e sticky geralmente não são mencionados, pois são zero para a maioria dos arquivos. Eles ainda estão lá para todos os arquivos, salvos junto com os outros.
Se realmente formos direto ao assunto, alguns sistemas de arquivos e interfaces armazenam o arquivotipoao longo dos bits de modo, nos bits ainda mais altos. O acima representa apenas 12 bits, portanto, com um campo de 16 bits, sobraram 4. Veja, por exemplo, odescrição de st_mode
emstat(2)
.
Responder2
Os três bits restantes representam os bits setuid, setgid e sticky; verNoções básicas sobre permissões e tipos de arquivo UNIXpara detalhes. Tudo isso é armazenado no inode.
Um diretório é na verdade um tipo de arquivo que armazena uma lista de nomes e inodes correspondentes. O próprio nome e inode de um diretório são armazenados em seu diretório pai; o diretório raiz é um caso especial, normalmente é um inode fixo no sistema de arquivos (inode 2 em Ext4) e é claro que é sempre nomeado
/
(o que acaba sendo relativo ao seu ponto de montagem...).