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:
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:
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“ Dateidrwxr-xr-x
: Ein Verzeichnis, auf das jeder Benutzer im System lesen und zugreifen kanndrwxrwx---
: 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