Dateiberechtigungen in Linux/Unix: Lesen, Schreiben und Ändern

⚡ Intelligente Zusammenfassung

Die Dateiberechtigungen in Linux und Unix steuern, wer die einzelnen Dateien lesen, schreiben und ausführen darf. Dadurch wird ein Mehrbenutzersystem durch zwei Ebenen geschützt: die Besitzrechte, die einem Benutzer, einer Gruppe und anderen die entsprechenden Berechtigungen zuweisen, und die Lese-, Schreib- und Ausführungsberechtigungsbits.

  • 👥 Eigentümer: Jede Datei und jedes Verzeichnis gehört einem Benutzer (Besitzer), einer Gruppe und anderen, die manchmal als die Welt bezeichnet werden.
  • 🔑 Berechtigungen: Für jede Besitzerklasse gelten drei Berechtigungen: Lesen (r), Schreiben (w) und Ausführen (x).
  • 📃 Anzeige: Der Befehl ls -l zeigt eine Berechtigungszeichenfolge wie -rw-rw-r– für Besitzer, Gruppe und Welt an.
  • 🔢 Absoluter Modus: Mit chmod und einer dreistelligen Oktalzahl werden die Berechtigungen für alle drei Klassen gleichzeitig gesetzt, zum Beispiel 764.
  • Symbolischer Modus: Mit chmod und den Operatoren u, g, o, a und +, -, = ändert man eine Besitzerklasse, ohne die anderen zu verändern.
  • 🧭 Besitzbefehle: Der Befehl chown ändert Besitzer und Gruppe, während chgrp nur die Gruppe ändert.
  • 🤖 KI-Hilfe: KI-Assistenten und GitHub Copilot können chmod- und chown-Befehle generieren und erklären.

Dateiberechtigungen in Linux und Unix: Lesen, Schreiben und Ändern

Dateiberechtigungen in Linux Unix legt fest, wer welche Datei lesen, ändern oder ausführen darf, und gewährleistet so die Sicherheit eines gemeinsam genutzten Mehrbenutzersystems. Diese Seite erläutert die Dateibesitzverhältnisse, die Lese-, Schreib- und Ausführungsberechtigungen sowie die Befehle, mit denen diese geändert werden können.

Linux ist ein Unix-Klon, ein Mehrbenutzer-Betriebssystem, das von vielen Benutzern gleichzeitig genutzt werden kann. Linux lässt sich auch ohne Anpassungen auf Großrechnern und Servern einsetzen. Dies birgt jedoch Sicherheitsrisiken, da ein unbefugter oder böswilliger Benutzer wichtige Daten beschädigen, verändern oder löschen kann. Aus Sicherheitsgründen unterteilt Linux die Autorisierung in zwei Ebenen:

  • Eigentumsstruktur
  • Genehmigung

Das Konzept von Dateiberechtigungen und -besitz ist in Linux von zentraler Bedeutung. Hier erklären wir die Linux-Berechtigungen und den Besitz und gehen näher darauf ein. Beginnen wir mit dem Besitz.

Besitz von Linux-Dateien

Jede Datei und jedes Verzeichnis auf Ihrem Unix/Linux-System hat einen von drei Eigentümertypen, die unten aufgeführt sind. Das folgende Diagramm zeigt die Zuordnung der Eigentümerschaft zu Benutzern, Gruppen und anderen.

Diagramm der Linux-Dateibesitzverhältnisse mit Darstellung von Benutzer-, Gruppen- und anderen Berechtigungsklassen

Mitglied

Ein Benutzer ist der Eigentümer der Datei. Standardmäßig wird die Person, die eine Datei erstellt hat, ihr Eigentümer. Daher wird ein Benutzer manchmal auch als Besitzer bezeichnet.

Gruppe an

A Benutzergruppe Eine Gruppe kann mehrere Benutzer enthalten. Alle Benutzer einer Gruppe haben die gleichen Linux-Gruppenberechtigungen für die Datei. Angenommen, Sie haben ein Projekt, in dem mehrere Personen Zugriff auf eine Datei benötigen. Anstatt jedem Benutzer manuell Berechtigungen zuzuweisen, können Sie alle Benutzer einer Gruppe hinzufügen und die Gruppenberechtigung für die Datei festlegen. So können nur die Mitglieder dieser Gruppe, und niemand sonst, die Dateien lesen oder bearbeiten.

Andere

Jeder andere Benutzer, der Zugriff auf eine Datei hat. Diese Person hat die Datei weder erstellt noch gehört sie einer Benutzergruppe an, der die Datei gehören könnte. Praktisch bedeutet das: jeder. Wenn Sie also Berechtigungen für andere festlegen, spricht man auch davon, Berechtigungen für alle Benutzer festzulegen.

Nun stellt sich die entscheidende Frage: Wie unterscheidet Linux zwischen diesen drei Benutzertypen, sodass Benutzer A keine Datei verändern kann, die wichtige Informationen oder Daten von Benutzer B enthält? Es ist, als ob man nicht möchte, dass ein Kollege, der an Ihrem Projekt arbeitet, Ihre Daten verändert. Linux-Computer Um Ihre Bilder anzusehen, benötigen Sie Berechtigungen, die das Nutzerverhalten definieren.

Lassen Sie uns das Berechtigungssystem unter Linux verstehen.

Linux-Dateiberechtigungen

Für jede Datei und jedes Verzeichnis in Ihrem Unix/Linux-System sind die folgenden drei Berechtigungen für alle drei oben genannten Eigentümer definiert.

  • Lesen: Diese Berechtigung erlaubt Ihnen, eine Datei zu öffnen und zu lesen. Die Leseberechtigung für ein Verzeichnis ermöglicht es Ihnen, dessen Inhalt aufzulisten.
  • Schreiben: Die Schreibberechtigung berechtigt Sie, den Inhalt einer Datei zu ändern. Die Schreibberechtigung für ein Verzeichnis berechtigt Sie, Dateien in diesem Verzeichnis hinzuzufügen, zu löschen und umzubenennen. Stellen Sie sich vor, Sie haben Schreibberechtigung für eine Datei, aber nicht für das Verzeichnis, in dem die Datei gespeichert ist. Sie können zwar den Inhalt der Datei ändern, aber die Datei selbst nicht umbenennen, verschieben oder aus dem Verzeichnis löschen.
  • Execute: In WindowsEin ausführbares Programm hat üblicherweise die Dateiendung „.exe“ und kann daher problemlos ausgeführt werden. Unter Unix/Linux kann ein Programm nur ausgeführt werden, wenn die Ausführungsberechtigung gesetzt ist. Ist die Ausführungsberechtigung nicht gesetzt, kann der Programmcode zwar möglicherweise angezeigt oder geändert werden (vorausgesetzt, Lese- und Schreibberechtigungen sind vorhanden), das Programm selbst jedoch nicht ausgeführt werden.

Betrachten wir die Dateiberechtigungen unter Linux anhand von Beispielen. Die Ausführung von `ls -l` im Terminal liefert folgendes Ergebnis:

ls -l

Der folgende Screenshot zeigt die Berechtigungszeichenfolge in einer langen Auflistung.

Die Terminalausgabe von ls -l zeigt die Berechtigungszeichenfolge rw-rw-r-- für eine Datei an.

Hier haben wir '-rw-rw-r–' hervorgehoben, und dieser seltsam aussehende Code gibt Auskunft über die Unix-Berechtigungen, die dem Besitzer, der Benutzergruppe und der Welt erteilt wurden.

Das erste „-“ bedeutet hier, dass wir eine Datei ausgewählt haben. Das darunter stehende Symbol kennzeichnet eine normale Datei.

Kleines Symbol, das anzeigt, dass es sich bei dem aufgelisteten Element um eine reguläre Datei handelt.

Andernfalls, wenn es sich um ein Verzeichnis handeln würde, wäre ein 'd' angezeigt worden, wie in der folgenden Auflistung.

Terminalausgabe, die ein Verzeichnis anzeigt, dessen Berechtigungszeichenkette mit einem vorangestellten „d“ gekennzeichnet ist.

Die Charaktere sind ziemlich leicht zu merken.

  • r = Leseberechtigung
  • w = Schreibberechtigung
  • x = Ausführungsberechtigung
  • – = keine Erlaubnis

Betrachten wir es einmal so. Der erste Teil des Codes lautet „rw-“. Dies deutet darauf hin, dass der Besitzer „Home“ Folgendes kann:

  • Lesen Sie die Datei
  • Schreiben oder bearbeiten Sie die Datei

Der Besitzer kann die Datei nicht ausführen, da das Ausführungsbit auf '-' gesetzt ist. Das untenstehende Symbol zeigt, dass das Ausführungsbit auf einen Bindestrich gesetzt wurde.

Kleines Symbol, das anzeigt, dass das Ausführungsberechtigungsbit auf einen Bindestrich gesetzt wurde.

Viele Linux-Distributionen wie Fedora, CentOS und Ubuntu Füge einen Benutzer einer Gruppe mit demselben Namen wie der Benutzer hinzu. So wird beispielsweise der Benutzer „tom“ der Gruppe „tom“ hinzugefügt.

Der zweite Teil ist „rw-“. Er gilt für die Benutzergruppe „Home“, und Gruppenmitglieder können:

  • Lesen Sie die Datei
  • Schreiben oder bearbeiten Sie die Datei

Der dritte Teil gilt für alle Nutzer weltweit. Er lautet „r–“. Das bedeutet, dass der Nutzer nur Folgendes tun kann:

  • Lesen Sie die Datei

Die folgende Aufschlüsselung ordnet jeden Teil der Berechtigungszeichenfolge dem Besitzer, der Gruppe und der Welt zu.

Aufschlüsselung der Berechtigungszeichenfolge rw-rw-r-- in Besitzer-, Gruppen- und Weltabschnitte

Ändern von Datei-/Verzeichnisberechtigungen in Linux mit dem Befehl 'chmod'

Angenommen, Sie möchten nicht, dass ein Kollege Ihre privaten Bilder sieht. Dies lässt sich durch Ändern der Dateiberechtigungen erreichen.

Wir können den Befehl 'chmod' verwenden. Befehl, was für „Änderungsmodus“ steht. Mit diesem Befehl können wir Berechtigungen (Lesen, Schreiben, Ausführen) für eine Datei oder ein Verzeichnis für den Eigentümer, die Gruppe und alle anderen Benutzer festlegen.

Syntax:

chmod permissions filename

Es gibt zwei Möglichkeiten, den Befehl zu verwenden:

  • Absoluter Modus
  • Symbolischer Modus

Absoluter (numerischer) Modus in Linux

In diesem Modus werden Dateiberechtigungen nicht als Zeichen, sondern als dreistellige Oktalzahl dargestellt. Die folgende Tabelle enthält die Zahlen für alle Berechtigungstypen.

Nummer Berechtigungstyp Symbol
0 Keine Erlaubnis -
1 Ausführen –X
2 Schreiben -w-
3 Ausführen + Schreiben -wx
4 Lesen Sie mehr R-
5 Lesen + Ausführen rx
6 Lesen + Schreiben rw-
7 Lesen + Schreiben + Ausführen rwx

Schauen wir uns den Befehl chmod in Aktion an, wie im folgenden Terminalfenster gezeigt.

Terminalbefehl ausführen, um die Dateiberechtigungen der Beispieldatei zu ändern (chmod 764).

Im obigen Terminalfenster haben wir die Berechtigungen der Datei „sample“ auf „764“ geändert. Der absolute Code „764“ bedeutet Folgendes:

  • Der Eigentümer kann lesen, schreiben und ausführen.
  • Die Benutzergruppe hat Lese- und Schreibrechte.
  • Die Welt kann nur lesen.

Dies wird als '-rwxrw-r–' angezeigt, wie im folgenden Ergebnis.

Terminalausgabe, die die Beispieldatei mit der Berechtigungszeichenfolge -rwxrw-r-- nach chmod 764 anzeigt

So können Sie in Linux die Benutzerberechtigungen für eine Datei ändern, indem Sie ihr eine absolute Zahl zuweisen.

Symbolischer Modus unter Linux

Im absoluten Modus ändern Sie die Berechtigungen für alle drei Eigentümer. Im symbolischen Modus können Sie die Berechtigungen eines bestimmten Eigentümers ändern. Dabei werden mathematische Symbole verwendet, um die Unix-Dateiberechtigungen zu modifizieren.

OperaDo. Beschreibung
+ Fügt einer Datei oder einem Verzeichnis eine Berechtigung hinzu
- Entfernt die Berechtigung
= Legt die Berechtigung fest und überschreibt zuvor festgelegte Berechtigungen.

Die verschiedenen Eigentümer werden wie folgt dargestellt.

Mitglied Denotationen
u Benutzer / Besitzer
g Gruppe
o Andere
a alle

Wir verwenden keine Berechtigungen in Zahlen wie 755, sondern in Zeichenketten wie rwx. Schauen wir uns das folgende Beispiel an.

Terminal, das symbolische chmod-Befehle mit u, g, o und +, -, = verwendet, um bestimmte Berechtigungen zu ändern.

Eigentümer und Gruppe unter Linux ändern

Um die Besitzrechte einer Datei oder eines Verzeichnisses zu ändern, können Sie folgenden Befehl verwenden:

chown user filename

Falls Sie sowohl den Benutzer als auch die Gruppe für eine Datei oder ein Verzeichnis ändern möchten, verwenden Sie folgenden Befehl:

chown user:group filename

Schauen wir uns das in der Praxis an, wie unten dargestellt.

Terminal, das den Befehl chown ausführt, um den Besitzer und die Gruppe einer Datei zu ändern

Falls Sie nur den Gruppenbesitzer ändern möchten, verwenden Sie folgenden Befehl:

chgrp group_name filename

„chgrp“ steht für „Gruppe ändern“. Der Screenshot unten zeigt die Verwendung des Befehls „chgrp“.

Terminal, das den Befehl chgrp ausführt, um nur den Gruppenbesitzer einer Datei zu ändern

Tipp

  • Die Datei /etc/group enthält alle auf dem System definierten Gruppen.
  • Mit dem Befehl „groups“ können Sie alle Gruppen finden, denen Sie angehören, wie unten gezeigt.

Terminal, das den Befehl „groups“ ausführt, um die Gruppen aufzulisten, denen der Benutzer angehört

  • Mit dem Befehl newgrp können Sie als Mitglied einer anderen Gruppe als Ihrer Standardgruppe arbeiten, wie unten gezeigt.

Terminal, das den Befehl newgrp ausführt, um zu einer anderen Gruppe zu wechseln

  • Es können nicht zwei Gruppen dieselbe Datei besitzen.
  • In Linux gibt es keine verschachtelten Gruppen. Eine Gruppe kann keine Untergruppe einer anderen sein.
  • x — Ausführen eines Verzeichnisses bedeutet, dass man berechtigt ist, in ein Verzeichnis „einzutreten“ und gegebenenfalls Zugriff auf Unterverzeichnisse zu erhalten.
  • Es gibt weitere Berechtigungen, die Sie für Dateien und Verzeichnisse festlegen können. Diese werden in einem späteren fortgeschrittenen Tutorial behandelt.

Häufig gestellte Fragen

Fügen Sie die Ausführungsberechtigung mit `chmod` hinzu. Die symbolische Form `chmod +x script.sh` gewährt jedem die Ausführungsberechtigung, während `chmod u+x script.sh` sie nur dem Besitzer gewährt. Anschließend können Sie das Skript direkt mit `./script.sh` aus seinem Verzeichnis ausführen.

umask legt die Standardberechtigungen fest, die für neu erstellte Dateien und Verzeichnisse entfernt werden. Dateien beginnen mit 666 und Verzeichnisse mit 777, der Wert von umask ist dann sub.tracted. Ein üblicher umask-Wert von 022 weist Dateien die Berechtigung 644 und Verzeichnissen die Berechtigung 755 zu. Führen Sie umask aus, um den aktuellen Wert anzuzeigen.

Dies sind spezielle Berechtigungsbits. setuid führt ein Programm mit den Rechten seines Besitzers aus, setgid führt es mit den Rechten der Gruppe aus oder sorgt dafür, dass neue Dateien die Gruppe eines Verzeichnisses erben, und das Sticky-Bit erlaubt es nur dem Besitzer einer Datei, diese in einem gemeinsam genutzten Verzeichnis wie /tmp zu löschen.

Ja. Nur der Root-Benutzer oder ein Benutzer mit sudo-Rechten kann den Besitzer einer Datei mit chown ändern. Ein normaler Besitzer kann seine Datei an eine Gruppe, der er angehört, weitergeben, aber die Zuweisung an einen anderen Benutzer erfordert aus Sicherheitsgründen Root-Rechte.

Diese Fehlermeldung bedeutet, dass Sie nicht die Berechtigung haben, die Datei zu ändern. Um `chmod` auszuführen, müssen Sie der Eigentümer der Datei sein oder als Root angemeldet sein; für `chown` benötigen Sie in der Regel Root-Rechte. Stellen Sie dem Befehl `sudo` voran oder wechseln Sie zum Eigentümer der Datei und versuchen Sie es erneut.

Verwenden Sie die rekursive Option -R. `chmod -R 755 myfolder` wendet die Berechtigungen auf den Ordner und alle darin enthaltenen Dateien und Unterordner an, und `chown -R user:group myfolder` bewirkt dasselbe für die Besitzverhältnisse. Gehen Sie mit der Option -R vorsichtig um, da sie alle Elemente innerhalb des Ordners betrifft.

KI-Assistenten können Anfragen wie „Mach dieses Skript nur für mich ausführbar“ in den richtigen chmod-Befehl übersetzen, die Bedeutung von Berechtigungen wie 755 erklären und vor riskanten Einstellungen wie 777 warnen. Sicherheitstools mit maschinellem Lernen kennzeichnen außerdem Dateien, deren Berechtigungen gefährlich offen erscheinen.

Ja. GitHub-Copilot kann anhand eines kurzen Kommentars, der die gewünschten Berechtigungen oder den Besitzer beschreibt, chmod-, chown- und chgrp-Befehle vorschlagen und diese während der Eingabe vervollständigen. RevBitte prüfen Sie jeden Vorschlag vor der Ausführung, da Änderungen der Berechtigungen und Eigentumsverhältnisse die Sicherheit beeinträchtigen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: