Antworten:
So ergänzen Sie die anderen Antworten:
Herkömmliche Unix-Berechtigungen sind unterteilt in:
r
)w
)x
)Jedes davon wird als Bit gespeichert, wobei 1 "zulässig" und 0 "nicht zulässig" bedeutet.
Beispielsweise wird der normalerweise geschriebene Nur-Lese-Zugriff r--
als binär 100
oder oktal gespeichert 4
.
Es gibt 3 Sätze dieser Berechtigungen, die den zulässigen Zugriff für Folgendes bestimmen:
Sie werden alle zusammen in derselben Variablen gespeichert, z. B. rw-r-----
Lese- / Schreibzugriff für den Eigentümer, schreibgeschützt für die Gruppe und kein Zugriff für andere, werden als 110100000
binär, 640
oktal gespeichert .
Das macht also 9 Bits.
Dann gibt es 3 andere spezielle Bits:
Siehe man 1 chmod
Einzelheiten von denen.
Und schließlich wird der Dateityp mit 4 Bits gespeichert, z. B. ob es sich um eine reguläre Datei, ein Verzeichnis, eine Pipe, ein Gerät oder was auch immer handelt.
Diese werden alle zusammen im Inode gespeichert und ergeben zusammen 16 Bit.
Welche Berechtigungen? Grundberechtigungen passen in 16 Bit; ext2 verwendet 32 Bit plus weitere 32 Bit für Dateiflaggen ( chattr(1)
); Dann verwenden POSIX-ACLs zusätzlich variablen Speicherplatz. Siehe /usr/include/linux/ext2_fs.h
für Details. (ext3 und ext4 bauen auf ext2 auf und verwenden meistens dieselbe Struktur.)
Informationen zu Dateien werden in einer Datenstruktur gespeichert, die als Inode bezeichnet wird. In dieser Struktur gibt es ein Feld für den Modus, das die Berechtigungen enthält. Dieses Feld auf meinem System ist ein vorzeichenloser Kurzschluss mit 2 Bytes und 16 Bit.
Schauen Sie sich fs.h in der Linux-Quelle an, um sich selbst davon zu überzeugen.