Was sind die letzten 3 Bits in den UNIX-Berechtigungsmodus-Bits?

Was sind die letzten 3 Bits in den UNIX-Berechtigungsmodus-Bits?

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 searchfür Verzeichnisse und executeDateien.

Folgendes verstehe ich nicht:

  1. Was sind die 3 verbleibenden Modusbits und sind sie alle im Inode gespeichert?

  2. 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/suzeigt auf einem System:

Access: (4755/-rwsr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

Hier ist die Oktaldarstellung 4755aller 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 uuuund 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 ( ).ooosusgt

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_modeinstat(2).

Antwort2

  1. 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.

  2. 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 ...).

verwandte Informationen