GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux-Dateiberechtigungskonzepte

Dieser Artikel untersucht die Kernkonzepte von Linux®-Dateiberechtigungen. Es beginnt mit den Grundlagen und geht zu fortgeschritteneren Themen über. Es enthält auch einige praktische Beispiele. Eine Einführung in Dateiberechtigungen und das Anzeigen von Dateiberechtigungen finden Sie unter Linux-Dateiberechtigungen mit ls überprüfen.

Dateizugriff

In einer Mehrbenutzerumgebung wie Linux ist es wichtig zu steuern, welche Benutzer verschiedene Dateien auf dem System ändern oder löschen können. Diese Kontrolle ist nicht nur eine notwendige Sicherheitsvorkehrung – sie verhindert katastrophale Unfälle. Wenn ein Benutzer nur eine minimale Anzahl von Dateien beeinflussen kann, ist die Wahrscheinlichkeit geringer, dass ein falsch eingegebener Befehl oder ein Tippfehler in einem Skript eine wichtige Datei zerstört oder vertrauliche Informationen auf einer öffentlichen Website veröffentlicht.

Bevor Sie herausfinden, wie Um den Dateizugriff zu verwalten, müssen Sie zunächst die Konzepte des Dateibesitzes und der Dateiberechtigungen verstehen. Beachten Sie, dass Eigentum und Berechtigungen auch für Verzeichnisse gelten, da Verzeichnisse grundsätzlich eine besondere Art von Datei sind, soweit es das Dateisystem betrifft. Auch wenn es einige Unterschiede für Verzeichnisse gibt, sind die Grundkonzepte gleich, sodass die meisten Dateiberechtigungskonzepte oder Befehle, die in diesem Artikel behandelt werden, auch für Verzeichnisse gelten.

Eigentumsgrundlagen

Jede Datei und jedes Verzeichnis in einem Linux-Dateisystem hat einen Besitzer. Der Eigentümer einer Datei kann Berechtigungen für die Datei zuweisen. Wenn Benutzer mom123 besitzt die Datei lawndarts , benötigen Sie die Erlaubnis von mom123 mit Lawnarts zu spielen . Sie kann Ihnen Zugriff gewähren, Ihnen den Zugriff verweigern oder Sie einfach auf Lawndarts schauen lassen ohne damit zu spielen.

Der Benutzer, dem eine Datei gehört, kann ihre Berechtigungen festlegen oder ändern und bestimmen, wer (einschließlich des Eigentümers) die Datei lesen, ausführen, ändern oder löschen kann. Es ist ein einfaches Privileg, aber es hat weitreichende Auswirkungen.

Dateigruppe

Während jede Datei einen Benutzer hat, der sie besitzt und ihre Berechtigungen kontrollieren kann, gehört jede Datei auch zu einer Gruppe . Eine Gruppe beschreibt eine Gruppe von Benutzern, die Dateiberechtigungen teilen, die sich von denen eines typischen Benutzers unterscheiden können. Ein Benutzer kann mehr als einer Gruppe angehören, aber eine Datei kann nur in einer Gruppe sein.

Der Gruppenbesitz ist eine praktische Möglichkeit, einem Dateieigentümer einen Satz von Berechtigungen für Personen zuzuweisen, die er nicht kennt („Sie können sehen, aber nicht berühren.“) und einen anderen Satz von Berechtigungen für Personen, denen er die Datei anvertraut („Sie können sehen und berühren. Aber niemand sonst kann.“).

Eigentümer ändern

Ein typischer Benutzer kann die Berechtigungen einer Datei steuern, aber keinen anderen Benutzer als Eigentümer zuweisen. Um den Besitz zu ändern, müssen Sie den Superuser verwenden, der allgemein als root bekannt ist .

Wenn Sie nicht als root angemeldet sind , sollten Sie das sudo verwenden Befehl zum Verwenden von Rootprivileges zum Ändern des Besitzers einer Datei.

Das Dateisystem ist flexibler, wenn es darum geht, die Gruppe einer Datei zu ändern. Sie können immer noch Root-Rechte verwenden, um die Gruppe zu ändern, aber wenn der Eigentümer der Datei zur Zielgruppe gehört, kann der Eigentümer der Datei auch eine Datei zur Zielgruppe wechseln.

Der Chown-Befehl

Der Hauptbefehl zum Ändern des Besitzers oder der Gruppe einer Datei ist chown . Die am häufigsten verwendete Syntax mit chown wird im folgenden Beispiel gezeigt:

chown user:group file1 file2 file3

Der user im vorherigen Beispiel ist der Benutzer, der die Datei besitzen soll, und die group ist die Gruppe, zu der die Datei gehören soll. Ein Doppelpunkt trennt die beiden Elemente des Befehls. Nach dem Benutzer- und Gruppenpaar listen Sie eine oder mehrere Dateien auf, die von der Änderung betroffen sind.

Hinweis :chown akzeptiert auch einen Punkt anstelle des Doppelpunkts, wenn Benutzer- und Gruppennamen getrennt werden. Die Verwendung des Punkts ist veraltet, wird aber immer noch unterstützt, und Sie sehen ihn möglicherweise in alten Skripten oder Dokumentationen. Verwenden Sie nach Möglichkeit den Doppelpunkt.

Sie können entweder den Benutzer oder die Gruppe weglassen, aber nicht beide. Wenn Sie nur den Eigentümer einer Datei ändern möchten, können Sie die folgende Syntax verwenden:

chown user file1

Wenn Sie einen Benutzernamen haben, der einen Punkt enthält, und Sie die Gruppe nicht ändern möchten, fügen Sie den Doppelpunkt nach dem Benutzer ein, wie im folgenden Beispiel gezeigt:

chown john.smith: file1

Wenn Sie chown verwenden möchten Um nur die Gruppe zu ändern, stellen Sie sicher, dass der Doppelpunkt vor dem Gruppennamen steht, auch wenn Sie keinen Benutzer angeben, wie im folgenden Beispiel gezeigt:

chown :group file1
Der chgrp-Befehl

Wenn Sie es vorziehen, den Doppelpunkt nicht zu verwenden, wenn Sie nur die Gruppe für eine Datei ändern möchten, können Sie chgrp verwenden wie im folgenden Beispiel gezeigt:

chgrp group file1

Dies funktioniert genauso wie chown :group file1 , aber es ist einfacher zu tippen und zu lesen.

Die Option -R

Wenn Sie den Eigentümer eines bestimmten Verzeichnisses und seiner Dateien und Unterverzeichnisse ändern möchten, verwenden Sie das -R Möglichkeit, eine rekursive Änderung vorzunehmen, wie im folgenden Beispiel gezeigt:

chown -R user:group directoryname

Das -R Option funktioniert mit chgrp auch. Bei beiden Befehlen gilt die Änderung zuerst für das übergeordnete Verzeichnis und iteriert dann durch alles innerhalb des Verzeichnisses (einschließlich Unterverzeichnissen).

Symbolische Links (Symlinks) erfordern eine besondere Behandlung für chown oder chgrp Operationen. Ein Symlink ist ein Alias ​​für eine andere Datei, ähnlich einer Verknüpfung in Microsoft® Windows®. Anstatt die Änderung auf den Symlink selbst anzuwenden, wendet das Dateisystem die Änderung auf das Ziel des Symlinks an. Wenn also der Symlink link zeigt auf die Datei thefile.txt , betrachten Sie den folgenden Befehl:

chown user:group link

Wenn dieser Befehl ausgeführt wird, ändert das System den Besitzer und die Gruppe für die Zieldatei thefile.txt . Der Besitz des symbolischen Links, link bleibt unverändert.

Wenn Sie den Eigentümer oder die Gruppe eines Symlinks ändern möchten, verwenden Sie den -h Flag fürchown und chgrp , wie im folgenden Beispiel gezeigt:

chown -h user:group link

Grundlagen zu Berechtigungen

Berechtigungen bestehen aus zwei Teilen:was jemand mit einer Datei tun darf und wer dieser jemand ist sein kann.

Was erlaubt ist

Es gibt drei Kategorien von Benutzeraktionen für Dateien und Verzeichnisse:Lesen, Schreiben und Ausführen.

Lesen

Die Leseberechtigung für eine Datei steuert, wer den Inhalt einer Datei öffnen oder anzeigen kann.

Die Leseberechtigung für ein Verzeichnis steuert, ob Sie eine Liste der Dateien im Verzeichnis sehen können, aber die Leseberechtigung reicht nicht aus. Sie benötigen außerdem eine Ausführungsberechtigung für das Verzeichnis, um die Dateiliste anzuzeigen.

Schreiben

Die Schreibberechtigung für eine Datei steuert, ob Sie den Inhalt der Datei ändern können oder nicht.

Die Schreibberechtigung für ein Verzeichnis steuert, ob Sie Dateien in diesem Verzeichnis hinzufügen, löschen oder umbenennen können. Um Ihre Schreibrechte in einem Verzeichnis auszuüben, benötigen Sie auch Ausführungsrechte für das Verzeichnis.

Hinweis :Nur das Schreibrecht auf das umschließende Verzeichnis beeinflusst, ob Sie eine Datei umbenennen oder löschen können. Einige Operationen, wie rm , führen Sie eine Überprüfung durch und verhindern Sie, dass Sie eine Datei löschen, die Sie nicht besitzen. Nichts hindert ein anderes Programm, das keine ähnliche Überprüfung eingebaut hat, daran, eine Datei zu löschen, in die Sie nicht schreiben können und die Ihnen nicht gehört.

Ausführen

Die Ausführungsberechtigung für eine Datei ermöglicht es Ihnen, diese Datei über die Befehlszeile auszuführen. Um einen beliebigen Befehl auszuführen (chown , ls , rm , usw.), müssen Sie die Ausführungsberechtigung für die Datei haben, die diesen Befehl darstellt. Wenn Sie versuchen, einen Befehl auszuführen und eine permission denied erhalten Fehler, Sie haben keine Ausführungsberechtigung.

Mit der Ausführungsberechtigung für ein Verzeichnis können Sie eine Operation in diesem Verzeichnis ausführen oder Ihr Arbeitsverzeichnis ändern (cd ) in dieses Verzeichnis.

Selbst wenn Sie Leserechte für ein Verzeichnis haben, können Sie ls nicht wirklich ausführen Befehl in diesem Verzeichnis, um die Liste der Dateien anzuzeigen, es sei denn, Sie haben auch die Ausführungsberechtigung. Andernfalls, wenn Sie versuchen, ls auszuführen , werden Sie blockiert, bevor das System überhaupt die Leseberechtigung prüfen kann. Um etwas innerhalb eines Verzeichnisses zu beeinflussen, müssen Sie die Ausführungsberechtigung für das Verzeichnis haben.

Wer kann was tun

Nachdem Sie nun wissen, welche Berechtigungen verfügbar sind, betrachten Sie die Kategorien, die verwendet werden, um zu steuern, wer von diesen Berechtigungen betroffen ist. Die Kategorien sind Benutzer, Gruppe und Sonstiges.

Die Benutzerkategorie

Der Benutzer Berechtigungskategorie bezieht sich auf Berechtigungen, die für den Eigentümer der Datei gelten. Dies ist die einzige Kategorie, die ausdrücklich nur auf einen Benutzer abzielt, da nur ein Benutzer Eigentümer der Datei sein kann.

Die Gruppenkategorie

Die Gruppe Kategorie bezieht sich auf Benutzer, die sich in derselben Gruppe wie die Datei befinden. Wenn sich die Datei in der Gruppe devs befindet , und die Datei hat Schreibrechte für seine Gruppe, würde das bedeuten, dass Benutzer in der devs Gruppe Schreibzugriff auf die Datei haben.

Die andere Kategorie

Der andere Kategorie ist ein Sammelbegriff für alle, die nicht unter die Kategorien Benutzer oder Gruppe fallen. Sie verwenden diese Kategorie, um festzulegen, ob andere Benutzer die Datei lesen, bearbeiten oder als Befehl ausführen können.

Kategoriepriorität

Es ist wichtig zu beachten, dass Berechtigungskategorien in der Reihenfolge Benutzer, Gruppe, Andere angewendet werden. Die erste Berechtigungskategorie, die das System für einen Benutzer findet, ist die einzige, die angewendet wird. Wenn Sie der Eigentümer der Datei sind, sind Ihre Berechtigungen so, wie sie für den Benutzer festgelegt wurden, sodass das System sich nicht die Mühe macht, die Gruppe oder andere Berechtigungen für die Datei zu überprüfen – es hat bereits gefunden, was es verwenden wird.

Dieses Konzept ist wichtig, denn wenn Sie eine Berechtigung für andere festlegen, wird diese Berechtigung nicht auf den Eigentümer der Datei oder auf irgendjemanden in der Gruppe dieser Datei angewendet. Diese Benutzer erhalten die Berechtigungen, die in den Benutzer- bzw. Gruppenkategorien festgelegt wurden.

Wenn Sie für eine Datei keine Leseberechtigung für die Gruppenkategorie, aber für den Benutzer und andere Kategorien festlegen, haben Benutzer in der Gruppe der Datei keinen Lesezugriff, alle anderen jedoch.

Berechtigungen plus Benutzer

Das Kombinieren von Eigentum, Benutzerkategorien und Berechtigungen bietet viele Optionen zum Steuern des Zugriffs auf Dateien und Verzeichnisse. Die folgenden Beispiele zeigen einige Möglichkeiten:

  • Wenn Sie eine Datei für die andere Kategorie schreibgeschützt machen, aber die Benutzer- und Gruppenkategorien darin schreiben lassen, können Sie eine Gruppe von Bearbeitern für eine Datei einrichten, während andere Benutzer sie weiterhin lesen können. Fügen Sie einfach die privilegierten Benutzer derselben Gruppe wie die Datei hinzu.

  • Wenn Sie die Leseberechtigung für die Benutzerkategorie festlegen und sie aus der Gruppe und anderen Kategorien entfernen, stellen Sie sicher, dass nur der Besitzer der Datei ihren Inhalt sehen kann.

  • Wenn Sie die Ausführungsberechtigung für eine Datei festlegen, gestatten Sie, dass sie als Befehl ausgeführt wird. Wenn Sie einen Befehl haben, den nur bestimmte Benutzer ausführen können sollen, entfernen Sie die Ausführungsberechtigung für die Datei der anderen Kategorie.

Verzeichnisse erhalten die gleiche Behandlung. Viele Systemprotokollverzeichnisse werden nur von der Benutzerkategorie (häufig root) auf Lesen und Ausführen eingestellt ) und schließen Sie diese Berechtigungen aus anderen Kategorien aus, um sicherzustellen, dass nur jemand mit Superuser-Zugriff die Protokolle anzeigen kann, unabhängig davon, welche Berechtigungen für die Dateien selbst festgelegt sind.

Warum Root existiert

Der Root-Benutzer existiert, um Zugriff und Kontrolle bereitzustellen. Der Root-Benutzer kann den Besitz und die Berechtigungen jeder Datei oder jedes Verzeichnisses auf dem System ändern. Dieser Benutzer kann auch mit Dateien und Verzeichnissen interagieren, als hätte er die umfassendsten verfügbaren Berechtigungen.

Selbst wenn der Benutzer eine Datei nicht lesen kann, aber die andere Kategorie kann, kann root sie lesen. Ähnlich kann root die Datei lesen, wenn der Benutzer die Datei lesen kann, andere jedoch nicht. Aber wenn keine Kategorie Leserechte hat (kein Benutzer, keine Gruppe und nicht andere), kann Root die Datei auch nicht lesen.

Dieses Verhalten ist am nützlichsten für Dateien, die Sie nicht versehentlich ändern möchten. Wenn Schreibberechtigungen von allen Kategorien für eine Datei entfernt werden, kann nicht einmal root den Inhalt der Datei ändern, ohne diese Berechtigungen zu ändern.

Schlussfolgerung

Mit einem grundlegenden Verständnis der Funktionsweise von Dateiberechtigungen unter Linux sind Sie besser darauf vorbereitet, Dateien vor versehentlichem oder böswilligem Schaden zu schützen. Sie können auch nach Fehlern Ausschau halten, die durch restriktive Dateiberechtigungen verursacht werden, z. B. wenn eine Anwendung nicht in der Lage ist, in ihr Protokoll zu schreiben (verursacht, weil der Benutzer, dem der Prozess gehört, keine Schreibberechtigung hat) oder einen Webserver nicht bedienen kann eine HTML-Datei (verursacht durch fehlende Leseberechtigung oder das Verzeichnis hat keine Ausführungsberechtigung).


Linux
  1. Linux – Alles ist eine Datei?

  2. Linux – Dateiberechtigung nur ausführen?

  3. Mitglieder einer Gruppe in Linux auflisten

  4. Beispiele für grundlegende „chmod“-Befehle unter Linux

  5. Wie lösche ich die s-Berechtigung für ein Verzeichnis in Linux?

Weniger Befehl unter Linux

Lernen Sie die Verwendung des Befehls chgrp (Change Group) in Linux

Grundlegendes zu Linux-Dateiberechtigungen

Ein Windows-Typ in einer Linux-Welt:Benutzer- und Dateiberechtigungen

Mount-CIFS-Berechtigung unter Linux verweigert – behoben!

Grundlegende Dateiberechtigungen und Eigentumsrechte in Linux verstehen