Linux verwaltet die Dateien in einem virtuellen Dateisystem (VFS, Virtual File System). Hier wird jeder Datei über eindeutige Inodes (Nummern) Eigenschaften zugeordnet:
Zugriffsrechte regeln, welcher Benutzer und welche Gruppe den Inhalt eins Verzeichnisses oder einer Datei lesen, verändern oder ausführen darf.
Diese Rechte können verändert werden, wenn man dafür die entsprechenden Rechte am Ordner bzw. der Datei verfügt. Der Root darf alles.
1. r - lesen
2. w - schreiben
3. x - ausführen
Lässt man sich mit ls den Inhalt eines Ordners ausgeben,
erhält man beispielsweise folgende Zeile:
drwxrwxr-x 2 anna staff 4.0K Apr 23 2020 /home/anna/spielplan.txt
In dieser einen Zeile sind viele Informationen verborgen. Hier einmal die einzelnen Bestandteile auseinandergerissen:
Ordner Besitzer Gruppe Welt Links zu Datei Eigentümer Gruppe Größe Zeitstempel Pfad/Name
-------- ---------- -------- ------ ---------------- ------------ -------- ------- ------------- --------------------------
d rwx rwx r-x 2 anna staff 4.0K Apr 23 2020 /home/anna/spielplan.txt
Obwohl Dateirechte sowohl für Dateien als auch Ordner gelten, gibt es
kleine aber feine Unterscheidungen, die beachtet werden müssen. So ist
es hoffentlich klar, dass das x-Recht für Dateien etwas
anderes bedeuten muss, als für einen Ordner - einen Ordner kann man
schließlich nicht “ausführen”.
| Recht | Datei | Verzeichnis |
|---|---|---|
r |
Datei kann gelesen werden. | Verzeichnisinhalt kann mit ls angezeigt werden. |
w |
Datei kann bearbeitet werden. | Dateien können hinzugefügt, gelöscht oder umbenannt werden. |
x |
Datei kann als Programm ausgeführt werden. | Verzeichnis kann betreten werden (z. B. mit cd), und
der Zugriff auf Dateien ist möglich (sofern erlaubt). |
Die Rechte werden häufig kombiniert. Hier sind typische Szenarien:
Dateien:
r - -: Datei kann nur gelesen werden.r w -: Datei kann gelesen und geschrieben werden, also:
geändert.r w x: Datei kann gelesen, geschrieben und ausgeführt
werden.Verzeichnisse:
r - -: Man sieht die Datei- oder
Verzeichnisnamen, aber keinen Zugriff auf Inhalte.r - x: Man kann Verzeichnisinhalte
sehen und betreten, aber keine
Änderungen vornehmen.r w x: Man kann Inhalte auflisten, bearbeiten,
hinzufügen und löschen.Die Buchstaben der symbolischen Darstellung sowie die Kombinationen aus ihnen werden durch einzelne Ziffern repräsentiert. Dabei steht je 1 Ziffer für genau eine Kombinaton von einem oder mehreren Rechten.
| Rechte | oktal | symbolisch | binär |
|---|---|---|---|
| Lesen, schreiben und ausführen | 7 | r w x |
111 |
| Lesen und Schreiben | 6 | r w - |
110 |
| Lesen und Ausführen | 5 | r - x |
101 |
| Nur lesen | 4 | r - - |
100 |
| Schreiben und Ausführen | 3 | - w x |
011 |
| Nur Schreiben | 2 | - w - |
010 |
| Nur Ausführen | 1 | - - x |
001 |
| Keine Rechte | 0 | - - - |
000 |
Aus https://wiki.ubuntuusers.de/Rechte/
Diese Kombinationen werden 3 mal angegeben für Benutzer, Gruppe, Others. Daraus folgt ein 3 stellige Kombination von Zahlen. Diese können eingesetzt werden, wenn man die Dateirechte ändern will. Hierzu benutzt man den Befehl chmod
Ausgangspunkt
rwxr-xr-x 4 wed wed 4.0K Feb 23 14:53 hallo.txt
Änderung 1
Ich will nur noch den Besitzer “wed” lesen und schreiben lassen. Alle anderen dürfen nichts.
chmod 600 hallo.txt
-rw------- 1 wed wed 17 Feb 23 13:37 hallo.txt
Die Kombination hierfür lautet 600 bzw -rw. (6- lesen
und schreiben, 0-nichts, 0-nichts)
Änderung 2
Rechte ändern auf lesen, schreiben, ausführen für Eigentümer und Gruppe. Alle anderen sollen wenigstens lesen können:
chmod 774 hallo.txt
-rwxrwxr-- 1 wed wed 17 Feb 23 13:37 hallo.txt
Setzen der Rechte im symbolischen Modus.
Hierbei können die Buchstaben r,w,x benutzt werden und
für Besitzer (u=user), Gruppe(g) und Andere(o=others) explizit gesetzt
werden.
chmod u=rwx,g=rw,o=r hallo.txt
-rwxrw-r-- 1 wed wed 17 Feb 23 13:37 hallo.txt
Besitzer oder Gruppe können mit uid/ gid oder Namen angegeben werden
chown alice:entwickler dokument.txt
Kombinationsmöglichkeiten von Besitzer und Gruppe
| Kombination | Bedeutung |
|---|---|
besitzer_name:gruppen_name |
Benutzer und Gruppe werden auf einen Schlag gesetzt |
:gruppen_name |
Die Gruppe wird gesetzt, wohingegen der Besitzer unverändert bleibt |
besitzer_name: |
Der Besitzer wird auf besitzer_name - und die Gruppe auf die Standardgruppe des eingeloggten Benutzers gesetzt |
besitzer_name |
Ausschließlich der Besitzer wird gesetzt |