Benutzer und Berechtigungen
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.