CodeGym /Kurse /Docker SELF /Grundlagen der Zugriffsrechte: chmod, chown, umask

Grundlagen der Zugriffsrechte: chmod, chown, umask

Docker SELF
Level 2 , Lektion 0
Verfügbar

Grundlagen der Zugriffsrechte: chmod, chown, umask

1. Begriff der Zugriffsrechte

Wenn du mit Dateien oder Verzeichnissen in Linux arbeitest, musst du den Zugriff darauf verwalten. Stell dir vor, du hast deine Socken offen liegen lassen, und jetzt kann jeder im Haus sie benutzen! Die Zugriffsrechte in Linux verhindern dieses "unerlaubte Benutzen der Socken" (oder etwas Wichtigeres, wie zum Beispiel deine Scripts). Lass uns das genauer anschauen.

Jede Datei (und jedes Verzeichnis) in Linux hat drei Sets von Zugriffsrechten, die bestimmen, wer sie lesen, schreiben oder ausführen darf:

  1. Read (r): Erlaubt das Anschauen des Dateiinhalts oder das Auflisten der Dateien in einem Verzeichnis.
  2. Write (w): Erlaubt das Ändern des Dateiinhalts oder das Hinzufügen/Löschen von Dateien im Verzeichnis.
  3. Execute (x): Gibt die Möglichkeit, die Datei als Programm auszuführen (oder in das Verzeichnis zu wechseln).

Das Drei-Ebenen-Modell

Jedes Recht gilt für drei Benutzergruppen:

  • Eigentümer (owner): Derjenige, der die Datei erstellt hat.
  • Gruppe (group): Benutzer, die in einer Gruppe zusammengefasst sind, der die Datei zugewiesen wurde.
  • Andere (others): Alle anderen Benutzer im System.

Ein Beispiel für Zugriffsrechte einer Datei:

-rwxr-xr--

Lass uns das entschlüsseln:

  • Das erste Zeichen - zeigt an, dass es sich um eine Datei handelt (bei einem Verzeichnis wäre es d).
  • Die ersten drei Zeichen rwx — Rechte für den Eigentümer (lesen, schreiben, ausführen).
  • Die nächsten drei Zeichen r-x — Rechte für die Gruppe (lesen, ausführen).
  • Die letzten drei Zeichen r-- — Rechte für andere (nur lesen).

2. Befehl chmod: Zugriffsrechte verwalten

Symbolische Schreibweise

Der Befehl chmod ändert die Zugriffsrechte für Dateien und Verzeichnisse. Die symbolische Schreibweise sieht folgendermaßen aus:

chmod [wer][aktion][rechte] dateiname
  • Wer: u (Besitzer), g (Gruppe), o (andere), a (alle).
  • Aktion: + (Rechte hinzufügen), - (Rechte entfernen), = (Rechte genau festlegen).
  • Rechte: r (lesen), w (schreiben), x (ausführen).

Beispiele:


# Ausführungsrechte für alle setzen
chmod a+x script.sh

# Schreibrechte nur für die Gruppe hinzufügen
chmod g+w file.txt

# Leserechte für andere entziehen
chmod o-r document.txt

Oktale Schreibweise

Die oktale Schreibweise (oder numerische) ist kompakter, erfordert jedoch ein Verständnis der "Zahlenmagie". In dieser Schreibweise wird jede Rechtekombination durch eine Zahl dargestellt:

  • r = 4
  • w = 2
  • x = 1

Die Rechte werden addiert:

  • rwx = 7 (4 + 2 + 1)
  • rw- = 6 (4 + 2)
  • r-- = 4

Schreibweise:

chmod [zahl][zahl][zahl] dateiname

Beispiel:


# Rechte rwx für den Besitzer, r-x für die Gruppe, r-- für andere setzen
chmod 754 file.sh

3. Ändern des Dateibesitzers: Befehl chown

Falls du eine Datei an einen anderen Benutzer (oder eine Gruppe) übertragen musst, hilft der Befehl chown.

Format:

chown [benutzer]:[gruppe] dateiname

Beispiele:


# Übertragen des Besitzers an Benutzer user1
chown user1 myfile.txt

# Besitzer und Gruppe übertragen
chown user1:group1 myfile.txt

# Nur die Gruppe ändern
chown :group2 myfile.txt

4. Standardmaske: umask

Wenn du eine Datei erstellst, werden die Zugriffsrechte dafür vom System festgelegt. Zum Beispiel könnten die Rechte rw-r--r-- sein. Aber woher kommen diese? Die Antwort ist: von dem umask-Befehl.

Was ist umask?

umask definiert, welche Rechte nicht gesetzt werden sollen für neue Dateien.

Zum Beispiel:

  • Grundrechte für eine Datei: 666 (keine Ausführung).
  • Maske: 022.
  • Endgültige Rechte: 644 (666 - 022).

Befehle:

  • Aktuelle Maske anzeigen: umask
  • Neue Maske festlegen: umask 0022

Beispiel:


# Maske setzen, damit neue Dateien rw-rw-r-- haben
umask 0002

5. Administratorrechte und sudo

Was ist sudo?

sudo (Abkürzung von "superuser do") ist ein Befehl in Linux- und Unix-basierten Systemen, der es einem Benutzer ermöglicht, Befehle im Namen eines Superusers (root) oder eines anderen Benutzers mit erweiterten Rechten auszuführen.

Das sudo-System bietet vorübergehenden Zugriff auf administrative Funktionen, ohne dass man ständig als root angemeldet sein muss, was das Risiko von unbeabsichtigten oder böswilligen Systemänderungen verringert.

Wichtig!

Einfach gesagt, man schreibt sudo vor den Befehl, den man mit Administratorrechten ausführen möchte.

Wie funktioniert sudo?

Befehl ausführen:

Wenn du einen Befehl mit sudo eingibst, prüft das System, ob dein Benutzer die Berechtigung hat, Befehle mit erweiterten Rechten auszuführen.

Zum Beispiel:

sudo apt update

Authentifizierung:

Bei der ersten Verwendung von sudo in der aktuellen Sitzung fordert das System dich auf, das Passwort des aktuellen Benutzers (nicht root) einzugeben.

Nach erfolgreicher Eingabe des Passworts speichert das System die Authentifizierung für einen kurzen Zeitraum (in der Regel 5-15 Minuten), sodass nicht bei jedem Befehl nach dem Passwort gefragt wird.

Befehl ausführen:

Wenn der Benutzer die im sudo-Konfigurationsfile angegebenen Rechte hat, wird der Befehl mit Superuser-Rechten ausgeführt.

Wichtige Features und Befehle von sudo

Befehl mit erweiterten Rechten ausführen:

sudo <Befehl>

Zum Beispiel:

sudo apt install nginx

Befehl als anderer Benutzer ausführen: Benutze den Parameter -u:

sudo -u <Benutzername> <Befehl>

Zum Beispiel:

sudo -u user1 ls /home/user1

Erhalt eines Administrations-Terminals: Starte eine Shell mit root-Rechten:

sudo -i

oder:

sudo su

Konfiguration von sudo anzeigen:

sudo -l

Zeigt die Befehle, die der aktuelle Benutzer ausführen darf.

Konfiguration von sudo bearbeiten:

sudo visudo

Dieser Befehl öffnet die Konfigurationsdatei /etc/sudoers für eine sichere Bearbeitung.

6. Beispiele

Lasst uns unser Wissen in der Praxis anwenden.

Aufgabe 1: Verwaltung der Rechte mit chmod

  1. Erstelle eine Datei:

    touch myfile.txt
    
  2. Setze für den Besitzer Leserecht, Schreibrecht und Ausführungsrecht:

    chmod u+rwx myfile.txt
    
  3. Füge Leserecht nur für andere hinzu:

    chmod o+r myfile.txt
    
  4. Prüfe die Rechte:

    ls -l myfile.txt
    

Aufgabe 2: Ändere den Besitzer mit chown

  1. Erstelle eine Datei:

    touch ownedfile.txt
    
  2. Ändere den Besitzer auf den Benutzer user1 (Administratorrechte erforderlich):

    sudo chown user1 ownedfile.txt
    
  3. Überprüfe die Änderungen:

    ls -l ownedfile.txt
    

Aufgabe 3: Experimente mit umask

  1. Prüfe die aktuelle Maske:

    umask
    
  2. Setze die Maske auf 027:

    umask 027
    
  3. Erstelle eine neue Datei:

    touch newfile.txt
    
  4. Überprüfe die Rechte der erstellten Datei:

    ls -l newfile.txt
    

7. Typische Fehler und Besonderheiten

  1. sudo bei Eigentümerwechsel vergessen: Nur ein Administrator kann den Eigentümer einer Datei ändern. Wenn du den Fehler "Operation not permitted" bekommst, probiere es mit sudo.
  2. Falsche Reihenfolge im chmod-Befehl: Die Rechte für das falsche Objekt geändert. Stelle sicher, dass du die richtige Datei oder das richtige Verzeichnis ausgewählt hast.
  3. umask beeinflusst nur neue Dateien: Wenn du versuchst, die Rechte von bereits existierenden Dateien mit umask zu ändern, funktioniert das nicht. Verwende dafür chmod.

Wusstest du, dass die Zugriffsrechte in Linux so flexibel sind, dass du eine Datei erstellen kannst, die nur eine einzige Person im ganzen Universum "sehen" kann? Wie man so schön sagt, mit großen Rechten kommt auch große Verantwortung! Jetzt, da du mit chmod, chown und umask bewaffnet bist, bist du bereit, deine Linux-Systeme nicht nur praktisch, sondern auch sicher zu machen.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION