Zum Inhalt springen

AB 17 — Zugriffsrechte

Mein Fortschritt0/1 (0 %)
RechtekonzeptÜberall, wo mehrere Benutzer auf einem System gleichzeitig arbeiten, muss auch ein Rechtekonzept für Prozesse, Dateien und Verzeichnisse existieren, damit Benutzer 𝐴 nicht ohne weiteres auf Dateien von Benutzer 𝐵 zugreifen kann. Linux implementiert dazu das Standardkonzept aller Unix-Betriebssysteme.
Getrennte RechteIn diesem Konzept sind jede Datei und jedes Verzeichnis genau einem Benutzer (Besitzer) und einer Gruppe zugeordnet. Jede Datei hat getrennte Rechte für den Besitzer, die Mitglieder der Gruppe, der die Datei zugeordnet ist (kurz „die Gruppe“ genannt), und alle anderen Benutzer (der »Rest der Welt«). Für diese drei Mengen von Benutzern können jeweils separat Schreib-, Lese- und Ausführungsrechte / vergeben werden. Der Eigentümer darf die Zugriffsrechte einer Datei / bestimmen. Die Gruppe und alle anderen Benutzer haben nur dann Rechte an einer Datei, wenn der Eigentümer ihnen diese Rechte einräumt.
ZugriffsmodusDie gesamte Einstellung der Rechte für eine Datei heißt auch deren Zugriffsmodus.
ZugriffsbeschränkungIn einem Mehrbenutzersystem, in dem private oder gruppeninterne Daten auf einem allgemein zugänglichen Medium gespeichert werden, kann der Eigentümer einer Datei durch entsprechende Zugriffsbeschränkung eine Veränderung oder das Lesen seiner Daten verbieten. Die Rechte einer Datei können für den Eigentümer, die Benutzergruppe und die sonstigen Benutzer separat und unabhängig voneinander festgelegt werden. Dadurch lassen sich bereits mit Hilfe der / Zugriffsrechte die Kompetenzen und Zuständigkeiten eines Gruppenarbeitsprozesses auf die Dateien, mit denen die Gruppe arbeitet, abbilden.

Für jede Datei und jedes Verzeichnis im System erlaubt Linux für jede der drei Kategorien von Benutzern – Eigentümer, Mitglieder der Dateigruppe, Rest der Welt – separate Zugriffsrechte. Diese Rechte teilen sich auf in Leserecht, Schreibrecht und Ausführungsrecht.

Für Dateien bedeuten diese Rechte in etwa das, was ihre Namen aussagen: Wer Leserecht hat, darf sich den Inhalt der Datei anschauen, wer Schreibrecht hat, darf ihren Inhalt ändern. Das Ausführungsrecht ist notwendig, um die Datei als Programm starten zu können.

Damit Benutzer sicher und gleichzeitig effizient arbeiten können, besitzt jede Datei und jedes Verzeichnis ein Berechtigungssystem.

Bei Verzeichnissen sieht es etwas anders aus: Leserecht ist notwendig, um den Inhalt eines Verzeichnisses anschauen zu können – etwa indem Sie das ls-Kommando ausführen. Schreibrecht brauchen Sie, um Dateien im Verzeichnis anlegen, löschen oder umbenennen zu können. Das »Ausführungsrecht« steht für die Möglichkeit, das Verzeichnis »benutzen« zu dürfen, in dem Sinne, dass Sie mit cd hineinwechseln oder seinen Namen in Pfadnamen von weiter unten im Dateibaum liegenden Dateien benutzen dürfen.

Für jeden Benutzer gelten diejenigen Zugriffsrechte, die „am besten passen“. Haben zum Beispiel die Mitglieder der Gruppe, der eine Datei zugeordnet ist, kein Leserecht für die Datei, der »Rest der Welt« dagegen schon, dann dürfen die Gruppenmitglieder nicht lesen. Das auf den ersten Blick verlockende Argument, dass, wenn schon der Rest der Welt die Datei lesen darf, die Gruppenmitglieder, die ja in gewissem Sinne auch Teil des Rests der Welt sind, das eigentlich auch dürfen sollten, zählt nicht.

Dieses System bestimmt:

wer auf eine Datei zugreifen darf

was mit der Datei gemacht werden darf

Die Berechtigungen werden mit den Buchstaben r, w, x dargestellt.

Informationen darüber, welche Rechte, Benutzer- und Gruppenzuordnung für eine Datei gelten, bekommen Sie mit „ls -l“.

$ ls -l -rw-r—r— 1 hugo users 4711 Oct 4 11:11 datei.txt drwxr-x--- 2 hugo group2 4096 Oct 4 11:12 testdir

Die Zeichenkette am linken Rand der Tabelle gibt die Zugriffsrechte für den Eigentümer, die Dateigruppe und den „Rest der Welt“ an (das allererste Zeichen ist nur der Dateityp und hat mit den Zugriffsrechten nichts zu tun). Die dritte Spalte nennt den Benutzernamen des Eigentümers und die vierte Spalte den Namen der Dateigruppe.

In der Rechteliste stehen „r“, „w“ und „x“ jeweils für ein vorhandenes Lese-, Schreib- und Ausführungsrecht. Steht nur ein „-„ in der Liste, dann hat die betreffende Kategorie das betreffende Recht nicht. „rw-r—r—” steht also für „Lese und Schreibrecht für den Eigentümer, aber nur Leserecht für die Gruppenmitglieder und den Rest der Welt“.

BuchstabeNameBedeutung bei DateienBedeutung bei Verzeichnissen
rreadDatei lesenVerzeichnisinhalt anzeigen
wwriteDatei ändernDateien erstellen/löschen
xexecuteDatei ausführenVerzeichnis betreten (cd)

Ohne x kann man ein Verzeichnis nicht betreten, auch wenn man lesen darf!

Als Dateieigentümer können Sie mit dem Befehl chmod (von change mode, »Zugriffsmodus ändern«) die Zugriffsrechte für die Datei setzen. Dabei können Sie die drei Kategorien durch die Abkürzungen „u“ (user) für den Eigentümer (Sie selbst), „g“ (group) für die Mitglieder der Dateigruppe und „o“ (others) für den »Rest der Welt« bestimmen. Die Rechte selbst werden durch die schon erwähnten Kürzel „r“, „w“ und „x“ festgelegt. Mit „+“, „-„ und „=“ können Sie verfügen, ob die benannten Rechte respektive zusätzlich zu den existierenden vergeben, von den existierenden „subtrahiert“ oder anstelle der bisherigen gesetzt werden sollen.

Zum Beispiel:

Terminal-Fenster
$ chmod u+x datei
Ausführungsrecht für Eigentümer
$ chmod go+w datei
setzt Schreibrecht für Gruppe und RdW
$ chmod g+rw datei
setzt Lese- und Schreibrecht für die Gruppe
$ chmod g=rw,o=r datei
setzt Lese- und Schreibrecht,
löscht Ausführungsrecht für die Gruppe
setzt reines Leserecht für den Rest der Welt
$ chmod a+w datei
äquivalent zu ugo+w

Tatsächlich sind Rechtespezifikationen um einiges komplexer. Konsultieren Sie die Infodokumentation zu chmod, um die Details herauszufinden.

Der Dateieigentümer ist (neben root) der einzige Benutzer, der die Zugriffsrechte für eine Datei oder ein Verzeichnis ändern darf. Dieses Privileg ist unabhängig von den tatsächlichen Dateirechten; der Eigentümer darf sich selbst alle Rechte entziehen, aber hindert sich dadurch nicht selbst daran, sich später wieder Rechte zu erteilen.

Die allgemeine Syntax des chmod-Kommandos ist

Terminal-Fenster
chmod [⟨Optionen⟩] ⟨Rechte⟩ ⟨Name⟩ …

Sie können den Zugriffsmodus einer Datei statt wie eben angegeben »symbolisch« auch „numerisch“ angeben. In der Praxis ist das sehr verbreitet, wenn Sie alle Rechte für eine Datei oder ein Verzeichnis auf einmal setzen

wollen, und funktioniert so: Die drei Rechtetripel werden als dreistellige Oktalzahl dargestellt – die erste Ziffer beschreibt die Rechte des Eigentümers, die zweite die Rechte der Dateigruppe und die dritte die Rechte für den »Rest der Welt«. Jede dieser Ziffern ergibt sich aus der Summe der jeweiligen Rechte, wobei Leserecht 4 zählt, Schreibrecht 2 und Ausführrecht 1.

Hier sind ein paar Beispiele für gängige Rechtezuordnungen in „ls -l“- und oktaler Darstellung:

rw-r—r—644
r--------400
rwxr-xr-x755
RechtWertWirkung
r4Dateien auflisten
w2Dateien anlegen/löschen
x1Verzeichnis betreten

Mit der numerischen Rechtedarstellung können Sie nur alle Rechte auf einmal setzen – es gibt keine Möglichkeit, wie mit den „+“- und „-„-Operatoren der symbolischen Darstellung einzelne Rechte zu setzen oder zu entfernen und die anderen dabei unbehelligt zu lassen. Das Kommando

Terminal-Fenster
$ chmod 644 datei

entspricht also der symbolischen Form

Terminal-Fenster
$ chmod u=rw,go=r datei
BinaireOktalStringBerechtigung
0000 (0+0+0)---keine
0011 (0+0+1)—xExecute
0102 (0+2+0)-w-Write
0113 (0+2+1)-wxWrite + Execute
1004 (4+0+0)r—Read
1015 (4+0+1)r-xRead + Execute
1106 (4+2+0)rw-Read + Write
1117 (4+2+1)rwxRead Write + Execute

Beispiel 1: rwx

r (4) + w (2) + x (1) = 7

Beispiel 2: r-x

r (4) + x (1) = 5

Beispiel 3: rw-

r (4) + w (2) = 6

Aufgeteilt:

7 | 7 | 7

SymbolBedeutung
uuser
ggroup
oothers
aall

Bedeutung:

User: rwx

Group: rwx

Others: rwx

Jeder darf alles → sehr unsicher!

Numerisch

Terminal-Fenster
chmod 755 script.sh

Symbolisch

Terminal-Fenster
chmod u+x script.sh
chmod g-w file.txt
chmod o+r readme.md

Eine Datei muss:

ausführbar sein (x)

ein Skript oder Binary enthalten

Beispiel:

Terminal-Fenster
chmod +x backup.sh
./backup.sh
ZahlSymbolischBedeutung
777rwxrwxrwxVollzugriff für alle
755rwxr-xr-xProgramme & Verzeichnisse
700rwx------Private Ordner
644rw-r—r—Textdateien
600rw-------Passwörter / private Dateien

Dateieigentümer und Gruppe setzen – chown und chgrp

Abschnitt betitelt „Dateieigentümer und Gruppe setzen – chown und chgrp“

Das Kommando chown erlaubt das Setzen des Datei- oder Verzeichniseigentümers und der Gruppe. Dem Befehl werden die Benutzerkennung des Besitzers und/oder die gewünschte Gruppenkennung und der Dateiname bzw. Verzeichnisname, dessen Eigentümer geändert werden soll, übergeben. Der Aufruf sieht so aus:

Terminal-Fenster
chown ⟨Benutzername⟩[:][⟨Gruppenname⟩] ⟨Name⟩
chown :⟨Gruppenname⟩ ⟨Name⟩

Werden Benutzername und Gruppenkennung angegeben, werden beide gesetzt wird nur ein Benutzername angegeben, bleibt die Gruppe so, wie sie war wird ein Benutzername mit Doppelpunkt angegeben, dann wird die Datei der primären Gruppe des Benutzers zugeordnet wird nur ein Gruppenname angegeben (mit Doppelpunkt), dann bleibt der Eigentümer so, wie er war. Zum Beispiel:

Terminal-Fenster
# chown hugo:entw brief.txt
# chown www-data bla.html Neuer Benutzer www-data
# chown :entw /home/entwicklung Neue Gruppe entw

Um Dateien an andere Benutzer oder beliebige Gruppen zu „verschenken“, müssen Sie Systemverwalter sein. Der Hauptgrund dafür ist, dass normale Benutzer sonst einander ärgern können, wenn das System „Kontingentierung“ (Quotas) verwendet, also jeder Benutzer nur über eine bestimmte Menge Plattenplatz verfügen darf.

Mit dem Kommando chgrp können Sie die Gruppe einer Datei ändern, und zwar auch als normaler Benutzer – solange Sie Eigentümer der Datei sowie Mitglied der neuen Gruppe sind:

chgrp ⟨Gruppenname⟩ ⟨Name⟩ …

Änderungen des Dateieigentümers oder der Dateigruppe ändern die Zugriffsrechte für die verschiedenen Kategorien nicht.

Auch chown und chgrp unterstützen die Option -R zur rekursiven Anwendung auf eine ganze Verzeichnishierarchie.

❌ Nie 777 verwenden (außer zu Testzwecken)

✔ Private Ordner → 700

✔ Programme → 755

✔ Konfigurationsdateien → 600 oder 640

✔ Gruppen sinnvoll einsetzen statt Others-Rechte

Aufgabe 1: Umwandlung von symbolischen in oktale Dateirechte

Abschnitt betitelt „Aufgabe 1: Umwandlung von symbolischen in oktale Dateirechte“

Üben Sie die Umwandlung der folgenden Dateirechte von der symbolischen Darstellung in die oktale (numerische) Darstellung:

a) rw- --- r-x b) rwx rwx rwx c) --- rwx -wx

Aufgabe 2: Umwandlung von oktalen in symbolische Dateirechte

Abschnitt betitelt „Aufgabe 2: Umwandlung von oktalen in symbolische Dateirechte“

Üben Sie die Umwandlung der folgenden Dateirechte von der oktalen (numerischen) Darstellung in die symbolische Darstellung:

a) 111 b) 550 c) 750

Erstelle eine Datei und setze Rechte:

Terminal-Fenster
touch test.txt
chmod 640 test.txt

Ändere den Eigentümer:

Terminal-Fenster
sudo chown user:group test.txt

Ändere die Gruppe:

chgrp teachers test.txt

Erstellen Sie die Datei file1 mit dem folgenden Zugriffsmodus: rw-------

Was ist der Unterschied zwischen den folgenden zwei Befehlen?

cp file1 file2 cat < file1 > file2

Wir gehen davon aus, dass file2 vor der Ausführung der Befehle nicht existiert.

Erkläre die folgenden Befehle:

chmod 550 prog1 prog2

chmod 644 file1

chmod u=rw,g=r,o=r file1

Betrachte die folgenden Dateien und Verzeichnisse:

-rw-r----- 1 paul student 4152 May 13 22:15 file1

-rw-r----- 1 paul student 325 May 13 22:15 file2

-rw-r----- 1 paul student 5487 May 13 22:15 file3

drwxr-x--- 2 paul student 32 May 13 23:19 private

Erkläre folgende Befehle:

$ chmod g+w file3

$ chmod o+r *

$ chmod og-r file3

$ chmod u+x,g-w file3

$ chmod 600 file1

$ chmod 644 file3

$ chmod 755 private

$ chown peter file3

Welche Option für chmod weist dem Dateibesitzer Lese- und Schreibrechte, der Gruppe nur Leserechte und allen anderen Benutzern ebenfalls nur Leserechte zu?

a) chmod 644 file.txt b) chmod 755 file.txt c) chmod 466 file.txt d) chmod 777 file.txt e) Keine der oben genannten

Welche Bedeutung haben die Zugriffsrechte 'rwxr-x---' auf einer Datei?