
Ich verstehe, dass es 12 Berechtigungsbits gibt, von denen es 3 Gruppen mit jeweils 3 Bits für Benutzer, Gruppen und andere gibt, die jeweils RWX sind. RW steht für Lesen und Schreiben, aber X steht search
für Verzeichnisse und execute
Dateien.
Folgendes verstehe ich nicht:
Was sind die 3 verbleibenden Modusbits und sind sie alle im Inode gespeichert?
Ich weiß, dass das Dateiverzeichnis selbst auch als Datei gilt, da alle Dinge in UNIX Dateien sind (stimmt das?), aber da UNIX-Systeme ACL verwenden, um das Dateisystem darzustellen, ist das Dateisystem eine Liste von Dateiname-Inode_Nummer-Paaren. Wo speichert ein Dateiverzeichnis seine eigene Inode-Nummer und seinen Dateinamen?
Antwort1
stat /bin/su
zeigt auf einem System:
Access: (4755/-rwsr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Hier ist die Oktaldarstellung 4755
aller 12 Modusbits. Die Nummer entspricht den Bits:
octal 4 7 5 5
bits 100 111 101 101
sst uuu ggg ooo
ug rwx rwx rwx
Wobei uuu
und die Berechtigungsbits für den Benutzer, die Gruppe und andere sind. Die verbleibende Gruppe (die erste in der Reihenfolge) enthält die Bits setuid ( ggg
) , setgid ( ) und sticky ( ).ooo
su
sg
t
Die Setuid- und Sticky-Bits werden oft nicht erwähnt, da sie für die meisten Dateien Null sind. Sie sind trotzdem für jede Datei vorhanden und werden zusammen mit den anderen gespeichert.
Wenn wir es genau betrachten, speichern einige Dateisysteme und Schnittstellen die DateiTypentlang der Modusbits, in den noch höheren Bits. Das Obige macht nur 12 Bits aus, also bleiben bei einem 16-Bit-Feld 4 übrig. Siehe zum Beispiel dieBeschreibung von st_mode
instat(2)
.
Antwort2
Die restlichen drei Bits repräsentieren die Setuid-, Setgid- und Sticky-Bits; sieheGrundlegendes zu UNIX-Berechtigungen und Dateitypenfür Details. Diese werden alle im Inode gespeichert.
Ein Verzeichnis ist tatsächlich eine Art Datei, die eine Liste von Namen und entsprechenden Inodes speichert. Der eigene Name und Inode eines Verzeichnisses werden in seinem übergeordneten Verzeichnis gespeichert; das Stammverzeichnis ist ein Sonderfall, es ist normalerweise ein fester Inode im Dateisystem (Inode 2 in Ext4) und ist natürlich immer benannt
/
(was letztendlich relativ zu seinem Einhängepunkt ist ...).