Tutorial: Linux-Dateiberechtigungen verstehen
Linux-Dateiberechtigungen sind ein zentrales Konzept in UNIX-ähnlichen Betriebssystemen. Sie bestimmen, wer was mit Dateien und Verzeichnissen tun darf. In diesem Tutorial werden wir die Grundlagen der Dateiberechtigungen in Linux durchgehen, damit du sie besser verstehst und sicher auf deinem System arbeiten kannst.
1. Grundlagen der Dateiberechtigungen
In Linux hat jede Datei und jedes Verzeichnis einen Eigentümer (Owner), eine Gruppe (Group) und Berechtigungen (Permissions) für drei Kategorien von Benutzern:
- Owner: Der Benutzer, dem die Datei oder das Verzeichnis gehört.
- Group: Eine Gruppe von Benutzern, die bestimmte Berechtigungen für die Datei oder das Verzeichnis haben.
- Others: Alle anderen Benutzer, die nicht der Eigentümer sind und nicht zur Gruppe gehören.
Die Berechtigungen bestehen aus drei Hauptaktionen:
- Lesen (
r
– read): Die Datei kann gelesen werden. Für Verzeichnisse bedeutet dies, dass der Inhalt des Verzeichnisses angezeigt werden kann. - Schreiben (
w
– write): Die Datei kann bearbeitet oder gelöscht werden. Für Verzeichnisse bedeutet dies, dass Inhalte hinzugefügt, entfernt oder umbenannt werden können. - Ausführen (
x
– execute): Die Datei kann als Programm ausgeführt werden. Für Verzeichnisse bedeutet dies, dass man in das Verzeichnis wechseln kann.
2. Anzeigen von Berechtigungen
Um die Berechtigungen einer Datei oder eines Verzeichnisses anzuzeigen, verwendest du den Befehl ls -l
. Beispiel:
$ ls -l
Ein typischer Eintrag sieht so aus:
-rwxr-xr--
Dieser Eintrag kann wie folgt interpretiert werden:
-
am Anfang zeigt an, dass es sich um eine Datei handelt (eind
würde ein Verzeichnis anzeigen).rwx
sind die Berechtigungen des Eigentümers (Lesen, Schreiben, Ausführen).r-x
sind die Berechtigungen der Gruppe (Lesen, Ausführen).r--
sind die Berechtigungen für alle anderen Benutzer (Lesen).
3. Ändern von Berechtigungen
Um die Berechtigungen einer Datei oder eines Verzeichnisses zu ändern, verwendest du den Befehl chmod
. Es gibt zwei Möglichkeiten, Berechtigungen zu ändern: symbolisch und numerisch.
Symbolische Methode:
u
: Benutzer (User)g
: Gruppe (Group)o
: Andere (Others)a
: Alle (All)
Du kannst die Berechtigungen hinzufügen (+
), entfernen (-
) oder setzen (=
). Beispiele:
# Lese- und Schreibrechte für den Eigentümer hinzufügen
chmod u+rw datei.txt
# Ausführrechte für die Gruppe entfernen
chmod g-x script.sh
# Allen volle Rechte geben
chmod a=rwx datei.txt
Numerische Methode:
Die Berechtigungen werden durch eine dreistellige Zahl dargestellt, wobei jede Stelle die Berechtigungen für den Eigentümer, die Gruppe und andere repräsentiert. Jede Aktion hat einen numerischen Wert:
r
(lesen) = 4w
(schreiben) = 2x
(ausführen) = 1
Die Zahlen werden addiert, um die Berechtigung darzustellen. Beispiel:
7
(rwx) = 4 (lesen) + 2 (schreiben) + 1 (ausführen)6
(rw-) = 4 (lesen) + 2 (schreiben)5
(r-x) = 4 (lesen) + 1 (ausführen)
Um die Berechtigungen zu setzen, verwendest du:
# Volle Berechtigungen für den Eigentümer, Lese- und Ausführrechte für die Gruppe, keine Rechte für andere
chmod 750 datei.txt
4. Eigentümer und Gruppen ändern
Du kannst den Eigentümer und die Gruppe einer Datei oder eines Verzeichnisses mit den Befehlen chown
und chgrp
ändern:
# Eigentümer ändern
chown neuer_besitzer datei.txt
# Gruppe ändern
chgrp neue_gruppe datei.txt
# Eigentümer und Gruppe gleichzeitig ändern
chown neuer_besitzer:neue_gruppe datei.txt
5. Spezialberechtigungen
Zusätzlich zu den Standardberechtigungen gibt es noch spezielle Berechtigungen:
- Setuid (
s
): Bei einer ausführbaren Datei wird das Programm mit den Rechten des Datei-Eigentümers ausgeführt. - Setgid (
s
): Bei einer ausführbaren Datei wird das Programm mit den Rechten der Gruppe ausgeführt. Bei einem Verzeichnis wird die Gruppe für alle neuen Dateien und Unterverzeichnisse vererbt. - Sticky Bit (
t
): Bei Verzeichnissen verhindert es, dass Benutzer Dateien löschen, die ihnen nicht gehören.
Diese Berechtigungen werden mit chmod
wie folgt gesetzt:
# Setuid setzen
chmod u+s programm.sh
# Setgid setzen
chmod g+s verzeichnis/
# Sticky Bit setzen
chmod +t verzeichnis/
6. Praxisbeispiele
Beispiel 1: Sicherstellen, dass nur der Eigentümer eine Datei bearbeiten kann:
chmod 600 private.txt
Beispiel 2: Ein Verzeichnis für gemeinsames Arbeiten einrichten, bei dem jeder Dateien erstellen und bearbeiten kann:
chmod 775 gemeinschaftsordner
Fazit
Das Verständnis von Linux-Dateiberechtigungen ist unerlässlich, um die Sicherheit und den ordnungsgemäßen Betrieb deines Systems zu gewährleisten. Indem du die hier vorgestellten Konzepte und Befehle meisterst, kannst du sicherstellen, dass nur autorisierte Benutzer auf deine Dateien und Verzeichnisse zugreifen können.