Entschlüsseln von Linux-Dateisystemberechtigungen

Veröffentlicht: 2017-02-24

Linux-Dateiberechtigungen mögen für manche wie arkane Hieroglyphen der Zahlentheorie erscheinen, und es ist verständlich. Das Dateisystem-Berechtigungsmodell von Linux stammt aus dem Erbe von UNIX. Sie sind jedoch recht einfach zu verstehen, sobald Sie die Logik dahinter verstanden haben.

Berechtigungsgruppen und -typen

Die gesamte Datei- und Ordnerzugriffskontrolle wird im Dateisystem anhand der folgenden Informationen definiert:

  • Drei Berechtigungsgruppen: u für Besitzer, g , Gruppe, o oder a , alle Benutzer.
  • Drei Berechtigungstypen: r , lesen, x , ausführen, w , schreiben.

Die Berechtigungstypen sind die Zeichen „r“, „x“ und „w“, die als Flags bezeichnet werden und als solche angezeigt werden, wenn Sie die Berechtigungen der Datei oder des Ordners auf irgendeine Weise auflisten. Nicht gesetzte Flags werden mit einem „-“-Zeichen dargestellt. Die Berechtigungsgruppen werden in Befehlen verwendet, die den Besitz und die Gruppe einer Datei ändern, auf die wir in Kürze eingehen werden.

Berechtigungen anzeigen

Sie können die Berechtigungen einer Datei oder eines Ordners anzeigen, indem Sie entweder einen GUI-Dateimanager verwenden oder die Ausgabe des Befehls ls im Konsolenterminal überprüfen.

Öffnen Sie Ihr Terminal und geben Sie den folgenden Befehl ein:

$ Berührungstest

$ ls -la test

-rw-r–r– 1 yorgos staff 0 Feb 23 17:07 test

Die Zeichenfolge „-rw-r–r–“ enthält die Dateisystemberechtigungsinformationen, an denen wir interessiert sind. Die restlichen Felder von links nach rechts zeigen die folgenden Informationen an:

  • Wie viele Links gibt es zu dieser Datei (1)
  • die Besitzer-Benutzer-ID (yorgos)
  • Die Gruppen-ID (Mitarbeiter)
  • Dateilänge in Byte (0)
  • Erstellungsdatum (23. Februar)
  • Erstellungszeit (17:07)
  • Dateiname (Test)

Berechtigungsbits

Sie werden feststellen, dass es 9 verschiedene Kombinationen von Berechtigungsgruppen und -typen gibt, aber 10 Flag-Positionen. Das erste zeigt das Dateityp-Flag, während das letztere die Berechtigungen selbst anzeigt. Die Dateitypen können sein: „-“ für Dateien, „l“ für symbolische Links (das sind Dateisystem-Links, die einfach auf eine andere Datei zeigen) und „d“ für Verzeichnisse. Da das erste Zeichen/Flag in unserem Beispiel „-“ ist, sprechen wir von einer einfachen Datei. Lassen Sie uns fortfahren und das Berechtigungsfeld aufschlüsseln:

: Dateityp (kann l, - oder d enthalten)

rw- : Lese- und Schreibrechte (keine Ausführung). Diese Berechtigungen gelten für den Eigentümer.

r– : Leseberechtigung, keine Schreib- und Ausführungsberechtigung. Diese Berechtigungen beziehen sich auf Benutzer, die einer Gruppe angehören.

r– : Leseberechtigung, kein Schreiben und Ausführen. Schließlich betreffen diese Berechtigungen alle anderen.

Im Endeffekt bedeutet dies also nur: „Diese Datei kann vom Besitzer gelesen und geschrieben werden, und alle anderen dürfen sie nur lesen“. Die Gruppe teilt die gleichen Berechtigungen.

Berechtigungen ändern

Um die Berechtigungen einer Datei oder eines Ordners zu ändern, verwenden Sie wiederum entweder einen GUI-Befehl (dies liegt außerhalb des Rahmens dieses Artikels, daher gehen wir nicht darauf ein) oder verwenden bestimmte Linux-Befehle in Ihrem Terminal. Der Befehl, den wir verwenden werden, heißt chmod (Dateimodus ändern). Der Befehl chmod akzeptiert eine Vielzahl von Parametern, die sein Verhalten auf viele verschiedene Arten ändern, aber seine allgemeine Verwendung ist die folgende:

$ chmod <Modus> <Datei>

Der <mode> wird durch folgende Symbole angegeben:

r das Lese-Flag

w das Schreib-Flag

x das Ausführungsflag

u das Benutzer-/Eigentümer-Berechtigungs-Flag

g das Gruppenberechtigungs-Flag

o das Berechtigungs-Flag für andere Benutzer

Es gibt noch ein paar andere, aber wir werden diese im letzten Abschnitt unseres Artikels besprechen.

Angenommen, Sie möchten den Benutzern der Gruppe Ausführungsberechtigungen erteilen (stellen Sie jedoch zuerst sicher, dass Sie der Eigentümer der Datei sind!):

$ chown g+x-Test
$ ls -l test
-rwxrwxrwx 1 yorgos staff 0 Feb 23 17:07 test

Oder vielleicht müssen Sie alle anderen komplett aussperren. Sie könnten die Datei weder lesen, schreiben noch ausführen:

$ chown o-rwx-Test
$ ls -l test
-rwxrwx— 1 yorgos staff 0 Feb 23 17:07 test

Hier sehen wir die letzten Flags, die alle auf „-“ gesetzt sind.
Wenn Sie weitere Beispiele sehen möchten, konsultieren Sie die Handbuchseite für chmod, indem Sie den folgenden Befehl eingeben:

$ Mann chmod

Eigentümer und Gruppen

Sie können auch den Datei- und Gruppenbesitz einer Datei ändern, indem Sie den Befehl chown verwenden.

Der Befehl chown akzeptiert verschiedene Parameter, die sein Verhalten in gewisser Weise ändern, aber die gebräuchlichste Verwendung ist die folgende:

# chown <Eigentümer> <Datei>

Oder

# chown <Eigentümer:Gruppe> <Datei>

Das erste Beispiel wird verwendet, um den Besitzer einer Datei zu einem anderen zu ändern. Denken Sie jedoch daran, dass Sie Root-Zugriff haben müssen, um den Eigentümer einer Datei zu ändern. Also, indem Sie Folgendes ausführen:

# chown niemand testen

# ls -l testen

-rwxrwxrwt 1 niemand Personal 0 Feb 23 17:07 test

Es zeigt sich nun, dass die Datei der Benutzerkennung „nobody“ gehört und nicht mehr „yorgos“.

Ebenso der Befehl:

# chown niemand: Radtest

# ls -l testen

-rwxrwxrwt 1 niemand Rad 0 23. Februar 17:07 Test


Ändert den Besitz der Datei auf niemand und die Gruppe auf wheel .

Wenn Sie mehr über den Befehl und seine verschiedenen Parameter erfahren möchten, konsultieren Sie die Handbuchseite chown, indem Sie den folgenden Befehl eingeben:

$ Mann chown

Sondergenehmigungen

Neben den Berechtigungstypen und -gruppen, die wir bereits im Artikel erwähnt haben, gibt es noch ein paar andere, die als „Sonderberechtigungen“ bezeichnet werden.

Dies sind die folgenden:

s       Das Flag Set User ID und Set Group ID.

t       Die Klebefahne.

Das erste wird gesetzt, indem das „s“-Flag im chmod- Befehl auf die übliche Weise wie folgt verwendet wird:

$ chmod u+s-Test
$ ls -l test
-rwsrwx—   1 Jahre   Mitarbeiter   0 Feb 23 17:07 Test

Dieses Flag wird auch als SUID-Flag (Set User ID) oder SGID-Flag (Set Group ID) bezeichnet. Ist dieses Bit gesetzt, erbt die Datei die Zugriffsrechte ihres Besitzers. Das bedeutet, dass jeder, der die Datei ausführt, dies als Eigentümer tut. Die SGID ist ähnlich, aber die Datei erbt das Zugriffsrecht ihrer Gruppe. Dies kann natürlich zu Sicherheitsproblemen führen, daher ist Vorsicht geboten.

Das klebrige Bit oder „t“ ist besonders nützlich. Wenn sie in einem Verzeichnis gesetzt werden, das normalerweise wie /tmp gemeinsam genutzt wird, können dort erstellte Dateien nur von ihren jeweiligen Eigentümern umbenannt oder gelöscht werden. Wenn das Sticky-Bit nicht gesetzt ist, hat der Eigentümer des Verzeichnisses keine Kontrolle darüber.

Sie können ein Verzeichnis „sticky“ machen, indem Sie den folgenden Befehl ausführen:

$ chmod +t /verzeichnis

Oktale Darstellung

Neben der Verwendung von Flags zur Definition von Berechtigungen wie „r“ und „w“ können Sie auch numerische Werte verwenden. Der Befehl chmod weist Berechtigungen die folgenden Werte zu:

„r“ = 4

„w“ = 2

"x" = 1

Um also eine Datei so einzustellen, dass sie für den Eigentümer lesen/schreiben/ausführen und für alle anderen lesen/ausführen kann, was „-rwxr-xr-x“ bedeutet, berechnen wir den numerischen Wert wie folgt:

rwx = 4+2+1 = 7

r x = 4 + 1 = 5

Wir geben schließlich den Befehl aus:

$ chmod 755 testen
$ls – testen
-rwxr-xr-x   1 Jahre   Mitarbeiter   21. Februar 24 02:08 Test

Üben Sie selbst, indem Sie verschiedene Berechtigungen und numerische Werte verwenden, um den Dreh raus zu bekommen!