Meisterung von Linux-Berechtigungen: Eine eingehende Analyse von Chmod und Chown

Hast du dich jemals im verwirrenden Universum der Linux-Berechtigungen verstrickt gefunden? Wenn du dich immer noch fragst, wer lesen, schreiben oder ausführen darf, nun, dann bist du hier genau richtig. Entwirre die komplexe Kunst der Linux-Berechtigungen und konzentriere dich dabei besonders auf das Power-Duo: chmod und chown!

In diesem Tutorial wirst du dich mit den Fähigkeiten ausstatten, den Zugriff auf deine Dateien und Verzeichnisse selbstbewusst zu kontrollieren.

Also, krempel die Ärmel hoch und erobere die Linux-Berechtigungen wie ein Champion!

Voraussetzungen

Bevor du dich in diese ausführliche Erkundung der Linux-Berechtigungen stürzt, stelle sicher, dass du eine Linux-Maschine zur Verfügung hast, um die Befehle chmod und chown zu beherrschen. Dieses Tutorial verwendet Ubuntu 22.04 LTS (Jammy Jellyfish).

Das Verständnis der Befehle chmod und chown

Im Reich der Linux-Berechtigungen haben die Befehle chmod und chown erhebliche Macht. Zu verstehen, wie man diese Befehle effektiv einsetzt, ist entscheidend für jeden Linux-Benutzer, vom Anfänger bis zum erfahrenen Administrator.

Beide Befehle bieten viele Möglichkeiten zur Steuerung deines Linux-Systems, aber hier sind die Grundlagen dessen, wozu jeder in der Lage ist:

  • chmod – Dieser Befehl ist der Schlüssel zur Verwaltung von Datei- und Verzeichnisberechtigungen in Linux. Er ermöglicht es dir, festzulegen, wer eine Datei lesen, schreiben und ausführen darf. Durch die Verwendung einer Kombination von Symbolen und numerischen Codes kannst du den Zugriff für Benutzer, Gruppen und andere gewähren oder einschränken.
  • chown – Mit diesem Befehl können Sie die Eigentümerschaft von Dateien und Verzeichnissen ändern. Dieser Befehl ist unschätzbar, wenn Sie die administrative Kontrolle übertragen oder die Verbindung zwischen einer Datei und einem Benutzer/Gruppe ändern müssen.

Ob Sie sensible Daten schützen oder den Zugriff für ein Team optimieren, diese Befehle sind Ihre zuverlässigen Begleiter in der Welt der Linux-Dateioperationen.

Lesen Sie weiter und tauchen Sie noch tiefer in die Feinheiten dieser Befehle ein.

Dateien auflisten und Berechtigungen anzeigen

Bevor Sie Berechtigungen und Eigentümerschaft mit den chmod– und chown-Befehlen ändern, ist der erste Schritt, Dateien aufzulisten und ihre Berechtigungen anzuzeigen.

Ähnlich wie beim Suchen eines Buchs in einer Bibliothek müssen Sie in Linux oft eine Liste von Dateien zusammen mit ihren zugehörigen Berechtigungen anzeigen. Dieses Wissen ist entscheidend für eine effektive Dateiverwaltung.

Um die Berechtigungen einer Datei oder eines Verzeichnisses anzuzeigen:

Öffnen Sie ein Terminal und führen Sie den folgenden ls-Befehl aus, um alle Dateien und Verzeichnisse im aktuellen Arbeitsverzeichnis im Langformat (-l) aufzulisten

ls -l

Das Langformat bietet detaillierte Informationen zu jeder Datei oder jedem Verzeichnis, wie unten gezeigt.

Diese Informationen umfassen Berechtigungen, Anzahl der Links, Eigentümer, Gruppe, Größe und Änderungszeit. Aber Ihr Fokus liegt jetzt auf den Dateiberechtigungen.

Viewing a list of files and directories

Drei Schlüsselberechtigungen regeln jede Datei und jedes Verzeichnis: Lesen (r), Schreiben (w) und Ausführen (x). Jede legt fest, wie Benutzer mit dem Inhalt jeder Datei und jedes Verzeichnisses interagieren.

Zusätzlich werden diese Berechtigungen jeweils auf drei verschiedene Eigentümerkategorien angewendet: Eigentümer, Gruppe und Andere (Benutzer, die weder Eigentümer noch Mitglieder der Gruppe sind).

Folgendes veranschaulicht jeden Teil der Dateiberechtigungen:

  • Das erste Zeichen gibt an, ob es sich um eine Datei () oder ein Verzeichnis (d) handelt.
  • Der erste Teil (rw-) – Gewährt dem Eigentümer Lese- und Schreibberechtigungen, aber keine Ausführung.
  • Der zweite Teil (rw-) – Gibt der Gruppe Lese- und Schreibberechtigungen, aber keine Ausführung.
  • Der letzte Teil (r–) – Erlaubt Anderen das Lesen, aber nicht das Schreiben oder Ausführen.
Illustrating file permissions

Ändern von Berechtigungen über den chmod-Befehl: Symbolischer Modus

Um Ihr Verständnis für Dateiberechtigungen zu erweitern, tauchen Sie in ein leistungsstarkes Tool zur Änderung von Berechtigungen ein. Stellen Sie sich vor, Sie können genau festlegen, wer auf eine Datei oder ein Verzeichnis zugreifen, es ändern oder ausführen kann. Der chmod-Befehl (Modus ändern) gibt Ihnen die Kontrolle über Ihr Linux-System.

Wenn Sie eine flexible und ausdrucksstarke Möglichkeit benötigen, den Zugriff auf Ihre Dateien und Verzeichnisse genau zu steuern, wird der symbolische Modus das gewünschte Ergebnis liefern.

Um Berechtigungen mit dem chmod-Befehl im symbolischen Modus zu ändern, befolgen Sie diese Schritte:

1. Führen Sie den untenstehenden Befehl who aus, um eine neue Datei (>) mit dem Namen user.txt als nicht privilegierter Benutzer zu erstellen, die eine Liste der aktuell angemeldeten Benutzer auf Ihrem Linux-System enthält.

Dieser Befehl gibt keine Ausgabe im Terminal aus, aber Sie werden die Berechtigungen der Datei im nächsten Schritt überprüfen.

who > user.txt

2. Führen Sie anschließend den Befehl unten aus, um die Berechtigungen für die user.txt Datei anzuzeigen.

ls -l user.txt

Unten sehen Sie die Standardberechtigungen der Datei, den Besitzer, den Tag und Monat der Erstellung sowie den Dateinamen.

Machen Sie sich Notizen über die aktuellen Dateiberechtigungen, da Sie später einen Vergleich durchführen werden. Ihr Fokus liegt momentan auf den Benutzerberechtigungen (rw-).

Viewing the file’s default permissions

3. Führen Sie nun den folgenden Befehl aus, um die Schreibberechtigung (w) für den Besitzer (u) zu entfernen, wobei alle anderen Berechtigungen für andere Kategorien unverändert bleiben.

In der folgenden Tabelle wird erläutert, was jedes Symbol repräsentiert:

User Symbol Details Operation Symbol Details Permission Symbol Details
u Owner + Add permissions r Read
g Group Remove permissions w Write
o Others = Set permissions explicitly x Execute

Bei erfolgreicher Ausführung gibt der chmod-Befehl kein Feedback im Terminal aus, was für dieses Tutorial gilt.

chmod u-w user.txt

4. Nachdem Sie die Berechtigungen geändert haben, führen Sie den folgenden Befehl aus, um die Berechtigungen der Datei user.txt anzuzeigen.

ls -l user.txt

Vergleichen Sie die Dateiberechtigungen, die Sie in Schritt zwei notiert haben (rw-), mit den untenstehenden. Beachten Sie, dass der Besitzer (u) jetzt nur noch das Leseberechtigung hat (r–).

Viewing modified owner permission

5. Führen Sie nun jede der folgenden Befehle aus, um Folgendes durchzuführen:

  • Fügen Sie (+) Schreib- (w) und Ausführungsberechtigungen (x) für den Besitzer (u) auf derselben user.txt-Datei hinzu.
  • Überprüfen Sie die geänderten Berechtigungen, indem Sie sich die Informationen zur user.txt-Datei anzeigen lassen.
chmod u+wx user.txt
ls -l user.txt

Wie unten gezeigt, hat der Benutzer nun Lese-, Schreib- und Ausführungsberechtigungen (rwx) für die user.txt-Datei.

Viewing modified owner permissions

6. Führen Sie anstelle des Hinzufügens den folgenden chmod-Befehl aus, um Folgendes zu entfernen (-):

  • Ausführungsberechtigung (x) für den Besitzer (u).
  • Schreibberechtigung (w) für die Gruppe (g).
  • Alle Berechtigungen (rwx) für Andere (o).

Dieser Befehl ermöglicht es Ihnen, Berechtigungen aus verschiedenen Kategorien gleichzeitig mit einem einzigen Befehl zu entfernen.

Dieses Mal teilt die Option -v chmod mit, eine Nachricht über die Änderungen anzuzeigen, die durch den Vorgang vorgenommen wurden.

chmod -v u-x,g+w,o-rwx user.txt
Viewing modified permissions for owner, group, and others

7. Führen Sie als Nächstes den folgenden Befehl aus, um die folgenden Operationen durchzuführen:

  • Fügen Sie allen Kategorien (a) Leseberechtigungen (r) hinzu.
  • Entfernen Sie Schreib- und Ausführungsberechtigungen (wx) für alle (a) Kategorien.
chmod a+r,a-wx user.txt

8. Führen Sie nun den unten stehenden Befehl aus, um die aktualisierten Berechtigungen der user.txt-Datei anzuzeigen.

ls -l user.txt
Viewing updated permissions for all categories

? Alternativ können Sie dieselbe Berechtigung für alle drei Kategorien (Benutzer, Gruppe und Andere) mit den folgenden Befehlen ändern:

chmod ugo-r – Entfernt (-) Leseberechtigungen (r) für alle drei Kategorien (ugo).

chmod ugo+r – Fügt (+) Leseberechtigungen (r) für alle drei Kategorien (ugo) hinzu.

9. Führen Sie abschließend die folgenden Befehle aus, um Folgendes auszuführen:

  • chmod – Setzt (=) Lese- und Schreibberechtigungen (rw) für den Eigentümer und die Gruppe und entfernt die Berechtigungen für andere (o=).
    Das Symbol = ermöglicht es Ihnen, Berechtigungen explizit festzulegen und vorhandene Berechtigungen zu überschreiben. Wenn nach dem Symbol = keine Berechtigungen angegeben sind, werden alle Berechtigungen für diese Kategorie entfernt.
  • ls – Zeigen Sie die Änderungen an, die Sie an den Berechtigungen der Datei user.txt vorgenommen haben.
chmod ug=rw,o= user.txt
ls -l user.txt
Viewing the modified permissions set

Anpassen der Zugriffsrechte mit dem Befehl chmod: Oktalmodus

Stellen Sie sich vor, Sie haben die Möglichkeit, die Berechtigungen für Ihre Dateien schnell und präzise zu setzen, ohne die Komplexitäten der symbolischen Notation. Der Oktalmodus (Basis-Acht-Notation) wird Ihre neue bevorzugte Methode zur Verwaltung von Berechtigungen.

Im Oktalmodus (Basis-Acht-Notation) werden Berechtigungen mit einer vier- oder dreistelligen Zahl von 0 bis 7 dargestellt. Jede Zahl entspricht einem bestimmten Satz von Berechtigungen für den Eigentümer, die Gruppe und andere, wie folgt:

  • Lesen (r) = 4
  • Schreiben (w) = 2
  • Ausführen (x) = 1
  • Keine Berechtigungen (-) = 0

Um zu sehen, wie der Oktalmodus die Dateiberechtigungen verwaltet, führen Sie diese Schritte aus:

1. Führen Sie den untenstehenden chmod-Befehl aus, um die folgenden Berechtigungen (664) für die Datei user.txt hinzuzufügen:

  • Eigentümer – lesen (4) + schreiben (2) + ausführen (0) = 6
  • Gruppe – lesen (4) + schreiben (2) + ausführen (0) = 6
  • Andere – lesen (4) + schreiben (0) + ausführen (0)= 4

Wenn Sie eine vierstellige Zahl mit dem chmod-Befehl für Dateiberechtigungen in Linux verwenden, stellt die führende Ziffer (ganz links) spezielle Berechtigungen dar, wie setuid, setgid und Sticky-Bit. Die nächsten drei Ziffern repräsentieren die Standardberechtigungen für den Eigentümer, die Gruppe und andere, jeweils.

Aber wenn Sie eine dreistellige Zahl verwenden, repräsentiert die erste Ziffer die Berechtigungen des Dateieigentümers (u), die zweite für die Dateigruppe (g), und die letzte für andere (o).

In vielen Fällen, besonders wenn es nicht um spezielle Berechtigungen geht, sehen Sie möglicherweise nur die dreistellige Notation. Die führende Null, die die Oktalnotation anzeigt, kann impliziert und somit weggelassen werden. Wie im Beispiel unten, statt 0664, verwenden Sie 664.

chmod 664 user.txt

2. Führen Sie anschließend den untenstehenden Befehl aus, um die Berechtigungen für die Datei user.txt anzuzeigen.

ls -l user.txt

Im untenstehenden Ausgabe können Sie sehen, dass die gesetzten Berechtigungen für die Datei user.txt im symbolischen Modus sind, was äquivalent zu 664 im Oktalmodus ist.

Viewing permissions modified via octal mode

3. Führen Sie nun den stat-Befehl unten aus, um eine umfassende Reihe von Statistiken über die Datei user.txt anzuzeigen, einschließlich der Berechtigungen im symbolischen und oktalen Modus.

stat user.txt

Unter der Zugriffseigenschaft, wie unten dargestellt, sehen Sie den oktalen und symbolischen Modus, der mit den Dateiberechtigungen der user.txt-Datei verbunden ist.

Mit diesen Informationen verbessern Sie Ihr Verständnis für die Anpassung von Berechtigungen mithilfe des oktalen Modus.

Viewing the octal and symbolic representations of permissions

Ändern der Dateibesitzrechte mit dem chown-Befehl

Während Berechtigungen festlegen, welche Aktionen auf einer Datei oder einem Verzeichnis durchgeführt werden können, können Sie festlegen, wer das Recht hat, diese Berechtigungen festzulegen oder zu ändern, indem Sie den Besitz ändern.

Der chown-Befehl (Besitzer ändern) ist der Hauptbefehl zur Verwaltung von Datei- und Verzeichnisbesitz. Wie der chmod-Befehl ist auch der chown-Befehl ein Root-Befehl – nur der Root-Benutzer kann den Besitz einer Datei oder eines Verzeichnisses ändern.

Um den Besitz mit dem chown-Befehl zu verwalten, gehen Sie wie folgt vor:

1. Führen Sie die unten stehenden Befehle aus, um einen Benutzer (useradd) mit dem Namen bill zu erstellen und ein starkes Passwort bereitzustellen.

Sie müssen mehr als einen Benutzer auf Ihrer lokalen Maschine haben, zusätzlich zum Standardbenutzer, der Sie sind, um zu sehen, wie die Änderung des Besitzes funktioniert.

sudo useradd bill
sudo passwd bill
Adding a user and updating user password

2. Führen Sie als nicht privilegierter Benutzer jeden der folgenden Befehle aus, um eine Liste der derzeit angemeldeten Benutzer (who) in eine Datei namens new.txt zu schreiben, und anzeigen Sie (ls) deren Besitzer und Berechtigungen.

who > new.txt
ls -l  new.txt

Unten zeigt die Ausgabe, dass der Dateibesitzer mercy ist.

Viewing the owner of the new.txt file

3. Nachdem der Besitzer überprüft wurde, führen Sie den folgenden chown-Befehl aus, um den Besitzer der Datei new.txt in bill zu ändern.

Wie der chmod-Befehl liefert auch der chown-Befehl keine Ausgabe, aber Sie überprüfen die Besitzeränderung im nächsten Schritt.

sudo chown bill new.txt

4. Führen Sie nun den folgenden Befehl aus, um (ls) den neuen Besitzer der Datei new.txt anzuzeigen.

ls -l  new.txt

Die Ausgabe bestätigt, dass Sie den Besitzer der Datei new.txt erfolgreich in bill geändert haben, der nun die Kontrolle und Autorität über diese Datei hat.

Viewing the new owner of the new.txt file

Durchsetzen des chown-Befehls zur Änderung der Gruppenzugehörigkeit

Im Linux-Dateisystem ist jede Datei und jedes Verzeichnis nicht nur mit einem einzelnen Besitzer, sondern auch mit einer Gruppe verbunden. Genau wie ein einzelnes verstimmes Instrument das gesamte Ensemble stören kann, kann eine falsche Zuordnung zu potenziellen Problemen führen.

Sollten Sie besorgt sein? Eigentlich nicht. Die Gruppenzuordnung ermöglicht einen gestuften Ansatz für Dateiberechtigungen. Dieser Ansatz ermöglicht es mehreren Benutzern, basierend auf der Gruppenmitgliedschaft zusammenzuarbeiten und Zugriff zu teilen.

Um die Gruppenzugehörigkeit zu ändern, führen Sie bitte die folgenden Schritte aus:

1. Führen Sie den folgenden Befehl aus, um die Gruppe im Zusammenhang mit der Datei new.txt anzuzeigen.

ls -l  new.txt
Viewing the group associated with the new.txt file

2. Führen Sie anschließend die unten stehenden Befehle aus, die keine Ausgabe liefern, sondern folgendes bewirken:

  • Erstellen Sie eine Gruppe (groupadd) namens developers.
  • Ändern Sie die Gruppenzugehörigkeit der Datei new.txt in developers (chown).
sudo groupadd developers
sudo chown :developers new.txt

? Alternativ können Sie anstelle eines individuellen Ansatzes die folgenden Befehle verwenden, um den Besitzer und die Gruppenzugehörigkeit einer Datei oder eines gesamten Verzeichnisses rekursiv zu ändern.

sudo chown -R john:finance-group user.txt

sudo chown -R john:finance-group ~/Desktop

3. Führen Sie nun den folgenden Befehl erneut aus, um die neue Gruppenzugehörigkeit der Datei (ls) new.txt anzuzeigen.

ls -l  new.txt

Unten bestätigt die Ausgabe, dass Sie die Gruppenzugehörigkeit der Datei new.txt erfolgreich zu developers geändert haben.

Viewing the new group ownership of the new.txt file

Ändern der Dateibesitzverhältnisse über numerische UID und GID

Während Benutzernamen und Gruppennamen eine menschenlesbare Möglichkeit bieten, Dateibesitzer zu identifizieren, sind jedem Benutzer und jeder Gruppe auch eindeutige numerische Identifikatoren zugeordnet.

Diese eindeutigen numerischen Identifikatoren sind die Benutzer-ID (UID) und die Gruppen-ID (GID). Sie bieten eine eindeutige Möglichkeit, Dateibesitz in Umgebungen mit überlappenden oder ähnlichen Benutzer- und Gruppennamen festzulegen.

Um die Besitzverhältnisse unter Verwendung numerischer UIDs und GIDs zu ändern, führen Sie die folgenden Schritte aus:

1. Führen Sie den folgenden Befehl aus, um Informationen (ls) über die Datei new.txt aufzulisten.

Die Option -n teilt dem Befehl ls mit, numerische UID und GID anzuzeigen, anstatt sie in ihre entsprechenden Benutzer- und Gruppennamen aufzulösen.

ls -n new.txt

Beachten Sie die UID und GID, die mit der Datei new.txt verbunden sind, da Sie sie für Vergleiche im nächsten Schritt benötigen werden.

Viewing the UID and GID associated with the new.txt file

2. Führen Sie anschließend die folgenden getent-Befehle aus, um die UID und GID des Benutzers und der Gruppe zu erhalten, die Sie für die Besitzrechte Ihrer Datei festlegen möchten.

Stellen Sie sicher, dass Sie die Platzhalter <Benutzername> und <Gruppenname> durch Ihren bevorzugten Benutzernamen und Gruppennamen ersetzen.

getent passwd <username>
getent group <groupname>

Notieren Sie sich die UID (z. B. 1002) und GID (z. B. 1005) in der folgenden Ausgabe, da Sie sie im nächsten Schritt zum Ändern des Besitzes benötigen werden.

Standardmäßig wird beim Erstellen eines Benutzers in Linux auch eine Gruppe mit demselben Namen wie der Benutzer erstellt. Diese Gruppe dient als primäre Gruppe des Benutzers und wird automatisch zu dieser primären Gruppe hinzugefügt.

Daher unterscheidet sich die GID für den Benutzer john von der GID der Gruppe finance. Sofern der Benutzer nicht ausdrücklich zur Gruppe hinzugefügt wird, bleiben ihre jeweiligen GIDs unterschiedlich.

Viewing UID and GID for user john and group finance

3. Führen Sie als Nächstes den folgenden Befehl aus, um den Besitz und die Gruppenzugehörigkeit der Datei new.txt zu ändern. Stellen Sie sicher, dass Sie 1002 und 1005 durch diejenigen ersetzen, die Sie im zweiten Schritt notiert haben.

? Beachten Sie, dass die Verwendung von numerischen UIDs und GIDs weniger lesbar sein kann als Benutzernamen und Gruppennamen. Stellen Sie daher sicher, dass Sie die richtigen Zahlen verwenden, um unbeabsichtigte Änderungen zu vermeiden.

sudo chown 1002:1005 new.txt

4. Führen Sie abschließend den folgenden Befehl erneut aus, um Informationen (ls) über die Datei new.txt aufzulisten und die Änderungen im Besitz der Datei zu überprüfen.

ls -n new.txt

Vergleichen Sie die UID und GID, die Sie in Schritt eins notiert haben, mit den folgenden. Beachten Sie, dass der neue Dateibesitz von 1001:1003 auf 1002:1005 geändert wurde.

Verifying the new UID and GID for the new.txt file

Schlussfolgerung

Sie haben gerade eine umfassende Erkundung der Linux-Berechtigungen begonnen und die Beherrschung wichtiger Befehle wie chmod und chown erlangt. Im Laufe dieses Tutorials sind Sie darin geschult worden, Berechtigungen mithilfe von symbolischen und oktalen Modi zu ändern.

Sie haben auch die Fähigkeiten erworben, Dateibesitz und Gruppenzuweisungen zu verwalten, sei es nach Namen oder durch numerische UID und GID. Mit diesem neu gewonnenen Fachwissen in chmod und chown haben Sie nun mächtige Werkzeuge zur Verfügung, um den Zugriff und den Besitz in Ihrem Linux-System zu regeln.

Aber warum stärken Sie nicht noch weiter Ihre Linux-Kenntnisse? Vielleicht sollten Sie sich mit fortgeschrittenen Zugriffskontrollmethoden wie Zugriffssteuerungslisten (ACLs) befassen? Streben Sie eine noch präzisere Steuerung der Datei- und Verzeichnisberechtigungen an!

Source:
https://adamtheautomator.com/chmod-and-chown/