Eine Einführung in die Linux-Berechtigungen

Einführung

Linux ist definitionsgemäß ein Mehrbenutzer-Betriebssystem, das auf den Unix-Konzepten der Dateibesitz und Berechtigungen basiert, um Sicherheit auf Dateisystemebene zu gewährleisten. Um einen Cloud-Server zuverlässig zu verwalten, ist es unerlässlich, dass Sie ein gutes Verständnis dafür haben, wie Besitz und Berechtigungen funktionieren. Es gibt viele Feinheiten im Umgang mit Dateibesitz und -berechtigungen, aber dieses Tutorial bietet eine gute Einführung.

In diesem Tutorial erfahren Sie, wie Sie den Linux-Besitz und die Berechtigungen anzeigen und verstehen. Wenn Sie ein Tutorial zum Ändern von Berechtigungen suchen, können Sie Grundlagen der Linux-Berechtigungen und die Verwendung von Umask auf einem VPS lesen.

Voraussetzungen

Stellen Sie sicher, dass Sie die in den vorherigen Tutorials dieser Serie behandelten Konzepte verstehen:

Um diesem Tutorial zu folgen, benötigen Sie Zugriff auf einen Cloud-Server. Sie können dieser Anleitung folgen, um einen DigitalOcean-Droplet zu erstellen.

Über Benutzer

Wie in der Einleitung erwähnt, ist Linux ein Mehrbenutzersystem. Sie sollten die Grundlagen von Linux-Benutzern und -Gruppen verstehen, bevor Sie sich mit Eigentums- und Berechtigungskonzepten befassen, da sie die Entitäten sind, auf die sich Eigentum und Berechtigungen beziehen. Lassen Sie uns damit beginnen, was Benutzer sind.

In Linux gibt es zwei Arten von Benutzern: Systembenutzer und reguläre Benutzer. Traditionell werden Systembenutzer verwendet, um nicht-interaktive oder Hintergrundprozesse auf einem System auszuführen, während reguläre Benutzer zum Einloggen und Ausführen von Prozessen interaktiv verwendet werden. Wenn Sie ein Linux-System zum ersten Mal initialisieren und sich anmelden, werden Sie möglicherweise feststellen, dass es bereits viele Systembenutzer gibt, die zum Ausführen der Dienste erstellt wurden, von denen das Betriebssystem abhängt. Dies ist normal.

Sie können alle Benutzer auf einem System anzeigen, indem Sie den Inhalt der Datei /etc/passwd betrachten. Jede Zeile in dieser Datei enthält Informationen zu einem einzelnen Benutzer, beginnend mit seinem Benutzernamen (dem Namen vor dem ersten :). Sie können den Inhalt der Datei passwd mit cat anzeigen:

  1. cat /etc/passwd
Output
… sshd:x:109:65534::/run/sshd:/usr/sbin/nologin landscape:x:110:115::/var/lib/landscape:/usr/sbin/nologin pollinate:x:111:1::/var/cache/pollinate:/bin/false systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false vault:x:997:997::/home/vault:/bin/bash stunnel4:x:112:119::/var/run/stunnel4:/usr/sbin/nologin sammy:x:1001:1002::/home/sammy:/bin/sh

Superbenutzer

Neben den beiden Benutzertypen gibt es den Superbenutzer oder Root-Benutzer, der die Möglichkeit hat, jegliche Dateibesitz- und Berechtigungsbeschränkungen außer Kraft zu setzen. In der Praxis bedeutet dies, dass der Superbenutzer das Recht hat, auf alles auf seinem eigenen Server zuzugreifen. Dieser Benutzer wird verwendet, um systemweite Änderungen vorzunehmen.

Es ist auch möglich, andere Benutzerkonten so zu konfigurieren, dass sie „Superbenutzerrechte“ übernehmen können. Dies wird oft als Verwendung von sudo bezeichnet, da Benutzer, die Berechtigungen zum temporären Erlangen von Superbenutzerrechten haben, dies durch vorangestellte Admin-Level-Befehle mit sudo tun. Tatsächlich gilt es als bewährte Praxis, einen normalen Benutzer zu erstellen, der sudo-Berechtigungen für Systemadministrationsaufgaben hat. Auf diese Weise können Sie den Root-Benutzeraccount sparsamer nutzen.

Über Gruppen

Gruppen sind Sammlungen von null oder mehr Benutzern. Ein Benutzer gehört zu einer Standardgruppe und kann auch Mitglied einer der anderen Gruppen auf einem Server sein.

Sie können alle Gruppen auf dem System und ihre Mitglieder anzeigen, indem Sie in der Datei /etc/group nachsehen, ebenso wie bei /etc/passwd für Benutzer. Dieser Artikel behandelt nicht die Gruppenverwaltung.

Jetzt, da Sie wissen, was Benutzer und Gruppen sind, wollen wir über Dateibesitz und Berechtigungen sprechen!

Anzeigen von Besitz und Berechtigungen

In Linux gehört jede Datei einem einzelnen Benutzer und einer einzelnen Gruppe und hat ihre eigenen Zugriffsberechtigungen. Schauen wir uns an, wie man den Besitz und die Berechtigungen einer Datei anzeigen kann.

Die gebräuchlichste Methode, um die Berechtigungen einer Datei anzuzeigen, ist die Verwendung von ls mit der Option für die lange Liste -l, z.B. ls -l meinedatei. Wenn Sie die Berechtigungen aller Dateien in Ihrem aktuellen Verzeichnis anzeigen möchten, führen Sie den Befehl ohne das Argument meinedatei aus, wie folgt:

  1. ls -l

Hinweis: Wenn Sie sich in einem leeren Home-Verzeichnis befinden und noch keine Dateien zum Anzeigen erstellt haben, können Sie weiterhin vorgehen, indem Sie den Inhalt des Verzeichnisses /etc auflisten, indem Sie diesen Befehl ausführen: ls -l /etc

Hier ist ein Beispiel-Screenshot der Ausgabe von ls -l mit Beschriftungen für jede Spalte der Ausgabe:

Jede Datei listet ihren Modus (der Berechtigungen enthält), Besitzer, Gruppe und Namen auf. Um zu erklären, was all diese Buchstaben und Bindestriche bedeuten, zerlegen wir die Spalte „Modus“ in ihre Bestandteile.

Verständnismodus

Um zu erklären, was alle Gruppierungen und Buchstaben bedeuten, hier eine Aufschlüsselung der Metadaten des Modus der ersten Datei im obigen Beispiel:

Dateityp

In Linux gibt es zwei Arten von Dateien: normale und spezielle. Der Dateityp wird durch das erste Zeichen des Modus einer Datei angezeigt – in diesem Leitfaden wird dies als „Dateityp-Feld“ bezeichnet.

Normale Dateien können anhand eines Bindestrichs (-) in ihrem Dateityp-Feld identifiziert werden. Normale Dateien können Daten oder alles andere enthalten. Sie werden als normale oder reguläre Dateien bezeichnet, um sie von speziellen Dateien zu unterscheiden.

Spezielle Dateien können anhand eines Nicht-Bindestrich-Zeichens, wie einem Buchstaben, in ihrem Dateityp-Feld identifiziert werden und werden vom Betriebssystem anders behandelt als normale Dateien. Das Zeichen, das im Dateityp-Feld erscheint, gibt die Art der speziellen Datei an. Zum Beispiel wird ein Verzeichnis, das die häufigste Art von spezieller Datei ist, durch das d-Zeichen identifiziert, das in seinem Dateityp-Feld erscheint (wie im vorherigen Screenshot). Es gibt mehrere andere Arten von speziellen Dateien.

Berechtigungsklassen

Aus dem Diagramm geht hervor, dass die Modus-Spalte den Dateityp anzeigt, gefolgt von drei Triaden oder Klassen von Berechtigungen: Benutzer (Besitzer), Gruppe und Andere. Die Reihenfolge der Klassen ist auf allen Linux-Systemen konsistent.

Die drei Berechtigungsklassen funktionieren wie folgt:

  • Benutzer: Der Besitzer einer Datei gehört zu dieser Klasse.
  • Gruppe: Die Mitglieder der Gruppe der Datei gehören zu dieser Klasse. Gruppenberechtigungen sind eine nützliche Möglichkeit, Berechtigungen für eine bestimmte Datei mehreren Benutzern zuzuweisen.
  • Andere: Alle Benutzer, die nicht Teil der Benutzer– oder Gruppen-Klassen für diese Datei sind, gehören zu dieser Klasse.

Lesen von symbolischen Berechtigungen

Als nächstes sollten Sie auf diese Sets von drei Zeichen achten. Sie geben die Berechtigungen in symbolischer Form an, die jede Klasse für eine bestimmte Datei hat.

In jeder Triade werden Lese-, Schreib- und Ausführungsberechtigungen folgendermaßen dargestellt:

  • Lesen: Angezeigt durch ein r an erster Position
  • Schreiben: Angezeigt durch ein w an zweiter Position
  • Ausführen: Angezeigt durch ein x an der dritten Stelle. In einigen besonderen Fällen kann hier ein anderes Zeichen stehen

A hyphen (-) in the place of one of these characters indicates that the respective permission is not available for the respective class. For example, if the group (second) triad for a file is r--, the file is “read-only” to the group that is associated with the file.

Verständnis von Lesen, Schreiben, Ausführen

Jetzt, da Sie wissen, wie Sie die Berechtigungen einer Datei lesen, sollten Sie wissen, was jede der Berechtigungen Benutzern tatsächlich ermöglicht. Dieses Tutorial behandelt jede Berechtigung einzeln, aber beachten Sie, dass sie oft in Kombination miteinander verwendet werden, um einen nützlichen Zugriff auf Dateien und Verzeichnisse zu ermöglichen.

Hier ist eine Aufschlüsselung des Zugriffs, den die drei Berechtigungstypen dem Benutzer gewähren:

Lesen

Für eine normale Datei ermöglicht die Leseberechtigung einem Benutzer, den Inhalt der Datei anzuzeigen.

Für ein Verzeichnis ermöglicht die Leseberechtigung einem Benutzer, die Namen der Dateien im Verzeichnis anzuzeigen.

Schreiben

Für eine normale Datei ermöglicht die Schreibberechtigung einem Benutzer, die Datei zu ändern und zu löschen.

Für ein Verzeichnis ermöglichen Schreibberechtigungen einem Benutzer das Löschen des Verzeichnisses, das Ändern seines Inhalts (Erstellen, Löschen und Umbenennen von Dateien darin) und das Ändern des Inhalts von Dateien, für die der Benutzer Schreibberechtigungen hat.

Ausführen

Für eine normale Datei ermöglicht die Ausführungsberechtigung einem Benutzer das Ausführen einer Datei — der Benutzer muss auch Leseberechtigungen haben. Ausführungsberechtigungen müssen für ausführbare Programme und Shell-Skripte gesetzt sein, bevor ein Benutzer sie ausführen kann.

Für ein Verzeichnis ermöglicht die Ausführungsberechtigung einem Benutzer den Zugriff auf oder das Eindringen in (d. h. cd) und den Zugriff auf Metadaten über Dateien im Verzeichnis (die Informationen, die in einem ls -l aufgelistet sind).

Beispiele für Modi (und Berechtigungen)

Jetzt, da Sie wissen, wie man den Modus einer Datei liest, und die Bedeutung jeder Berechtigung verstanden haben, werden Sie einige Beispiele für häufige Modi mit kurzen Erklärungen sehen, um die Konzepte zusammenzuführen.

  • -rw-------: Eine Datei, die nur vom Eigentümer zugänglich ist
  • -rwxr-xr-x: Eine Datei, die von jedem Benutzer im System ausführbar ist. Eine „weltweit ausführbare“ Datei
  • -rw-rw-rw-: Eine Datei, die von jedem Benutzer im System zur Modifikation offen ist. Eine „weltweit beschreibbare“ Datei
  • drwxr-xr-x: Ein Verzeichnis, auf das jeder Benutzer im System lesen und zugreifen kann
  • drwxrwx---: Ein Verzeichnis, das vom Besitzer und der Gruppe modifizierbar ist (einschließlich seines Inhalts)
  • drwxr-x---: Ein Verzeichnis, auf das seine Gruppe zugreifen kann

Der Besitzer einer Datei genießt in der Regel die meisten Berechtigungen im Vergleich zu den anderen beiden Klassen. In der Regel sehen Sie, dass die Gruppe und andere Klassen nur eine Teilmenge der Berechtigungen des Besitzers haben (gleichwertig oder weniger). Dies ergibt Sinn, da Dateien nur für Benutzer zugänglich sein sollten, die sie aus einem bestimmten Grund benötigen.

Eine weitere Sache, die zu beachten ist, ist, dass obwohl viele Berechtigungskombinationen möglich sind, nur bestimmte in den meisten Situationen sinnvoll sind. Zum Beispiel wird der Zugriff auf Schreiben oder Ausführen fast immer durch den Zugriff auf Lesen begleitet, da es schwer ist, etwas zu ändern und unmöglich auszuführen, was man nicht lesen kann.

Fazit

Sie sollten jetzt ein gutes Verständnis dafür haben, wie Besitz und Berechtigungen in Linux funktionieren. Um zu lernen, wie man diese Berechtigungen mit chown, chgrp und chmod ändert, verweisen Sie auf Linux-Berechtigungsgrundlagen und die Verwendung von Umask auf einem VPS.

Wenn Sie mehr über die Grundlagen von Linux erfahren möchten, lesen Sie das nächste Tutorial in dieser Serie, Eine Einführung in die Linux-E/A-Umleitung.

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-linux-permissions