Combien de bits sur un système de files Linux sont pris en count pour les permissions d'un file?
Pour append aux autres réponses:
Les permissions Unix traditionnelles sont décomposées en:
r
) w
) x
) Chacun de ceux-ci est stocké comme un bit, où 1 signifie autorisé et 0 signifie non autorisé.
Par exemple, l'access en lecture seule, typiquement écrit r--
, est stocké en tant que binary 100
ou octal 4
.
Il existe 3 sets de ces permissions, qui déterminent l'access autorisé pour:
Ils sont tous stockés set dans la même variable, par exemple rw-r-----
, ce qui signifie en lecture-écriture pour le propriétaire, en lecture seule pour le groupe, et aucun access pour les autres, est stocké comme 110100000
binary, 640
octal.
Donc ça fait 9 bits.
Ensuite, il y a 3 autres bits spéciaux:
Voir man 1 chmod
pour plus de détails.
Enfin, le type de file est stocké en utilisant 4 bits, par exemple s'il s'agit d'un file normal, d'un directory, d'un canal, d'un périphérique ou autre.
Ceux-ci sont tous stockés set dans l'inode, et set, il fait 16 bits.
Quelles permissions? Les permissions de base correspondent à 16 bits; ext2 utilise 32 bits, plus un autre 32 bits pour les drapeaux de file ( chattr(1)
); alors les ACL POSIX utilisent l'espace variable en plus. Voir /usr/include/linux/ext2_fs.h
pour plus de détails. (ext3 et ext4 s'appuient sur ext2 et utilisent principalement la même structure.)
Les informations sur les files sont stockées dans une structure de données appelée un inode. Il existe un champ dans cette structure pour le mode, qui contient les permissions. Ce champ sur mon système est un short non signé de 2 octets et 16 bits.
Jetez un oeil à fs.h dans la source Linux pour voir par vous-même.