Benutzer und Berechtigungen

Veröffentlicht am:

Die wichtigsten Befehle zum Merken

  • id — die eigene Benutzeridentität und Gruppen sehen.
  • ls -l — Eigentümer und Berechtigungsbits einer Datei lesen.
  • chmod MODUS DATEI — die Berechtigungsbits einer Datei ändern.

Befehle und Optionen

Diese Befehle kommen im kurzen Beispiel unten vor.

Befehl Bedeutung
id Benutzer-ID (uid), primäre Gruppen-ID (gid) und Gruppenmitgliedschaften anzeigen.
mktemp Eine leere temporäre Datei mit eindeutigem Namen und Zugriff nur für den Eigentümer erstellen.
ls -l "$permission_file" -l zeigt eine ausführliche Auflistung mit Berechtigungen, Eigentümer und Gruppe.
chmod 640 "$permission_file" Dem Eigentümer Lesen/Schreiben, der Gruppe Lesen und anderen keinen Zugriff geben.
rm "$permission_file" Nur die temporäre Beispieldatei entfernen.

Bash-Syntax: permission_file=$(…) speichert die Ausgabe eines Befehls; "$permission_file" setzt den gespeicherten Pfad als ein Argument ein.

Die entscheidenden Konzepte

1. Prozesse greifen mit einer Identität auf Dateien zu

Linux-Prozesse laufen mit einer Benutzeridentität und Gruppenmitgliedschaften. Zugriffsprüfungen verwenden diese Identität. Auch ein Dienstkonto ist ein Benutzer, selbst wenn sich kein Mensch damit anmeldet.

Erfolgreiches Lesen in deinem Terminal beweist nicht, dass ein Dienst dieselbe Datei lesen kann. Er könnte als anderer Benutzer mit anderen Gruppen laufen.

2. Der Eigentümer bestimmt die passende Berechtigungskategorie

Jede Datei hat einen Eigentümer, eine zugeordnete Gruppe und Berechtigungsbits für Eigentümer, Gruppe und andere.

Bei gewöhnlichen Modusprüfungen verwendet Linux die Eigentümerrechte, wenn der Benutzer des Prozesses die Datei besitzt. Andernfalls gelten die Gruppenrechte, wenn eine Prozessgruppe passt, sonst die Rechte für andere. Die drei Kategorien werden nicht zusammenaddiert.

In ls -l ist der erste Name der Eigentümer und der zweite die Gruppe. Das sind separate Identitäten, auch wenn ihre Namen gleich lauten.

3. Lesen, Schreiben und Ausführen haben konkrete Bedeutungen

Bei einer regulären Datei erlaubt r das Lesen, w das Ändern des Inhalts und x die Ausführung. Bei -rw-r----- steht das erste - für eine reguläre Datei. Die übrigen Zeichen bilden drei Gruppen: rw-, r-- und ---.

Numerische Modi beschreiben dieselben Bits: Lesen = 4, Schreiben = 2, Ausführen = 1. Addiere sie innerhalb jeder Kategorie. 640 bedeutet daher Eigentümer 6 (Lesen + Schreiben), Gruppe 4 (Lesen), andere 0 (nichts). Ein Ausführungsrecht macht beliebige Daten nicht zu einem gültigen Programm.

4. Verzeichnisrechte kontrollieren den Pfad

Bei einem Verzeichnis erlaubt Lesen das Auflisten von Namen, Schreiben das Ändern von Einträgen und Ausführen das Durchlaufen und Zugreifen nach Namen. Zum Erstellen oder Entfernen von Einträgen sind normalerweise Schreib- und Ausführungsrechte am übergeordneten Verzeichnis nötig.

Eine lesbare Datei kann unerreichbar bleiben, wenn ein übergeordnetes Verzeichnis den Durchgang blockiert. Umgekehrt hängt das Löschen eines Dateinamens vor allem vom Verzeichnis ab, nicht vom Schreibrecht der Datei selbst. Zusätzliche Regeln können gelten.

Vergib den Zugriff, den die Anwendung braucht. Modusbits sind eine Ebene: ACLs, Sicherheitsrichtlinien und schreibgeschützte Mounts können ebenfalls eingreifen. Pauschal erweiterte Rechte können Daten offenlegen, ohne die Ursache zu beheben.

Ein kleines Beispiel

Optional: Verwende ein Bash-Terminal als gewöhnlicher Linux-Benutzer. Führe die Zeilen einzeln aus und fahre nur fort, wenn mktemp erfolgreich war:

id
permission_file=$(mktemp)
ls -l "$permission_file"
chmod 640 "$permission_file"
ls -l "$permission_file"
rm "$permission_file"

Erwarte zunächst Zugriff nur für den Eigentümer, normalerweise -rw-------. Nach chmod sollte -rw-r----- erscheinen: Die Gruppe erhielt Leserechte, während die Eigentümerschaft gleich blieb. Benutzer, Gruppe, Dateiname und Zeitstempel variieren. Das Beispiel prüft die Modusänderung, nicht den Zugriff mit einem anderen Konto.

chmod und das abschließende Entfernen bleiben bei Erfolg normalerweise ohne Ausgabe. Die Datei bleibt leer und wird in der letzten Zeile gelöscht. Vorhandene Dateien oder Konten werden nicht geändert.

Merke dir: Prüfe, als wer der Prozess läuft, wem die Datei gehört und welche Rechte entlang des Pfads gelten.