Wie viele Bits haben die Zugriffsflags einer Datei?

7

Wie viele Bits in einem Linux-Dateisystem werden für die Berechtigungen einer Datei benötigt?

Philosoph
quelle
Meinen Sie wörtlich die traditionellen Berechtigungsbits oder interessieren Sie sich für andere berechtigungsähnliche Metadaten?
Mattdm

Antworten:

9

So ergänzen Sie die anderen Antworten:

Herkömmliche Unix-Berechtigungen sind unterteilt in:

  • read ( r)
  • schreiben ( w)
  • Datei / Zugriffsverzeichnis ausführen ( 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 100oder oktal gespeichert 4.

Es gibt 3 Sätze dieser Berechtigungen, die den zulässigen Zugriff für Folgendes bestimmen:

  • der Besitzer der Datei
  • die Gruppe der Datei
  • alle anderen Benutzer

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 110100000binär, 640oktal gespeichert .

Das macht also 9 Bits.

Dann gibt es 3 andere spezielle Bits:

  • setuid
  • setgid
  • klebrig

Siehe man 1 chmodEinzelheiten 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.

Mikel
quelle
Nachdem ich durch diesen Blog-Beitrag über Linux-Dateiberechtigungen verwirrt war, wollte ich fast in UL-SE danach fragen, aber zum Glück fand ich Ihre Erklärung.
Menschheit und
4

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.hfür Details. (ext3 und ext4 bauen auf ext2 auf und verwenden meistens dieselbe Struktur.)

Geekosaurier
quelle
3

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.

Mr. Shickadance
quelle