Benutzer und Gruppen
Linux ist von Anfang an für viele Benutzer gebaut. Jede Datei und jeder Ordner hat genau einen Besitzer und genau eine Gruppe. Gruppen fassen Benutzer zusammen, die dieselben Rechte brauchen, zum Beispiel alle, die Protokolle lesen dürfen (Gruppe adm) oder alle, die Administrator werden dürfen (Gruppe sudo). Auch Dienste laufen als eigene Benutzer: Der Webserver ist meist www-data.
| Eingabe | Was du erfährst |
|---|---|
| id | Deine Benutzernummer (uid), deine Hauptgruppe (gid) und alle Gruppen, in denen du bist. |
| groups | Nur die Namen deiner Gruppen. groups mia zeigt die Gruppen von mia. |
| cat /etc/passwd | Alle Benutzer des Systems, einer pro Zeile. |
| cat /etc/group | Alle Gruppen und ihre Mitglieder. |
azubi@lernarena:~$ id
uid=1000(azubi) gid=1000(azubi) groups=1000(azubi),4(adm),27(sudo)Rechte in ls -l lesen
Jetzt kannst du endlich jede Spalte von ls -l verstehen. Datum und Uhrzeit sehen bei dir anders aus:
-rw-r--r-- 1 azubi azubi 83 Sep 28 09:30 backup.sh| Teil | Bedeutung |
|---|---|
| - | Die Art: - ist eine Datei, d ein Ordner (directory). |
| rw-r--r-- | Die Rechte, drei Gruppen zu je drei Zeichen (siehe unten). |
| 1 | Die Anzahl der Verweise auf die Datei. Für den Anfang unwichtig. |
| azubi azubi | Erst der Besitzer, dann die Gruppe. |
| 83 Sep 28 09:30 | Größe in Byte und Zeitpunkt der letzten Änderung. |
Die neun Rechte-Zeichen sind drei Dreiergruppen: für den Besitzer (u wie user), für die Gruppe (g wie group) und für alle anderen (o wie others). Jede Gruppe liest sich gleich:
| Zeichen | Bei einer Datei | Bei einem Ordner |
|---|---|---|
| r | Inhalt lesen (read) | Mit ls auflisten, was darin liegt |
| w | Inhalt ändern (write) | Darin Dateien anlegen, umbenennen, löschen (zusammen mit x) |
| x | Als Programm ausführen (execute) | Mit cd hineinwechseln und auf die Dateien darin zugreifen |
| - | Dieses Recht fehlt | Dieses Recht fehlt |
rw-r--r-- heißt also: Der Besitzer darf lesen und schreiben, die Gruppe und alle anderen nur lesen. Linux prüft dabei nur eine Dreiergruppe: Bist du der Besitzer, gilt die erste, bist du in der Gruppe, die zweite, sonst die dritte.
Enter führt aus, Tab ergänzt Namen, Pfeil hoch holt frühere Befehle, Bild hoch blättert zurück. Esc und dann Tab verlässt das Terminal.
Finde mit id oder groups heraus, in welchen Gruppen du bist. Lass dir danach mit ls -l die Rechte von backup.sh anzeigen. Darfst du die Datei ausführen?
Enter führt aus, Tab ergänzt Namen, Pfeil hoch holt frühere Befehle, Bild hoch blättert zurück. Esc und dann Tab verlässt das Terminal.
Ziele
- Finde heraus, in welchen Gruppen du bist (offen)
- Zeige die Rechte von backup.sh in der langen Form (offen)
Musterlösung anzeigen
id
ls -l backup.shEin möglicher Weg. Andere Wege sind genauso richtig, geprüft wird nur das Ergebnis. Die Rechte lauten rw-r--r--: Nirgends steht ein x, also darf niemand die Datei ausführen, auch du als Besitzer nicht.
Rechte ändern mit chmod
chmod (change mode) ändert die Rechte. Das darf nur der Besitzer oder root. Es gibt zwei Schreibweisen. Mit Buchstaben sagst du, wer welches Recht bekommt oder verliert:
| Eingabe | Wirkung |
|---|---|
| chmod u+x backup.sh | Der Besitzer (u) bekommt (+) das Recht zum Ausführen (x). |
| chmod g-w bericht.txt | Die Gruppe (g) verliert (-) das Schreibrecht (w). |
| chmod o=r index.html | Andere (o) haben genau (=) nur noch das Leserecht. |
| chmod a+r liste.txt | Alle (a wie all) bekommen das Leserecht. |
Die zweite Schreibweise ist eine Zahl aus drei Ziffern, eine je Dreiergruppe. Jedes Recht hat einen Wert: r = 4, w = 2, x = 1. Die Werte einer Gruppe zählst du zusammen. rwx ist 4 + 2 + 1 = 7, r-x ist 4 + 1 = 5, r-- ist 4. Aus rwxr-xr-x wird so 755. Diese Werte begegnen dir ständig:
| Zahl | Rechte | Typisch für |
|---|---|---|
| 755 | rwxr-xr-x | Ordner und Programme: alle dürfen lesen und ausführen, nur der Besitzer ändern. |
| 644 | rw-r--r-- | Normale Dateien: alle lesen, nur der Besitzer schreibt. |
| 700 | rwx------ | Private Ordner und Skripte, nur für den Besitzer. |
| 600 | rw------- | Geheimes wie Passwörter oder private Schlüssel. |
| 750 | rwxr-x--- | Ordner für ein Team: Gruppe darf lesen und hinein, andere nichts. |
Mach backup.sh mit chmod u+x für dich als Besitzer ausführbar. In zugang.txt steht ein Passwort: Setze die Datei mit chmod und einer Zahl so, dass nur noch du lesen und schreiben darfst (rw-------, die Zahl steht in der Tabelle oben).
Enter führt aus, Tab ergänzt Namen, Pfeil hoch holt frühere Befehle, Bild hoch blättert zurück. Esc und dann Tab verlässt das Terminal.
Ziele
- Mach backup.sh für dich ausführbar (offen)
- Setze zugang.txt so, dass nur du lesen und schreiben darfst (600) (offen)
Musterlösung anzeigen
chmod u+x backup.sh
chmod 600 zugang.txt
ls -lEin möglicher Weg. Andere Wege sind genauso richtig, geprüft wird nur das Ergebnis. Nach chmod u+x erscheint backup.sh in ls grün: Das ist die Farbe für ausführbare Dateien.
sudo und chown
Der Benutzer root darf alles. Damit niemand dauerhaft als root arbeitet, gibt es sudo (etwa: „tu das als Administrator“). Es führt einen einzelnen Befehl mit root-Rechten aus, aber nur für Mitglieder der Gruppe sudo. Auf einem echten Server fragt sudo dabei nach deinem eigenen Passwort, das Übungs-Terminal lässt das weg. Jeder Aufruf landet in /var/log/auth.log.
azubi@lernarena:~$ cat /etc/shadow
cat: /etc/shadow: Permission denied
azubi@lernarena:~$ sudo cat /etc/shadow
root:*:20000:0:99999:7:::
azubi:$y$j9T$geheim:20000:0:99999:7:::chown (change owner) ändert Besitzer und Gruppe. Dateien verschenken darf nur root, deshalb steht fast immer sudo davor:
| Eingabe | Wirkung |
|---|---|
| sudo chown mia bericht.txt | mia wird Besitzerin, die Gruppe bleibt. |
| sudo chown mia:mia bericht.txt | Besitzer und Gruppe auf einmal, getrennt durch einen Doppelpunkt. |
| sudo chown -R www-data:www-data /var/www/html | Ein ganzer Ordner mit allem darin (rekursiv). |
Die Webseiten in /var/www/html gehören noch root. Der Webserver läuft als www-data und soll sie besitzen. Übergib beide Dateien mit sudo chown an www-data, Besitzer und Gruppe. Probier es ruhig zuerst ohne sudo.
Enter führt aus, Tab ergänzt Namen, Pfeil hoch holt frühere Befehle, Bild hoch blättert zurück. Esc und dann Tab verlässt das Terminal.
Ziele
- Übergib die beiden Seiten in /var/www/html an www-data (Besitzer und Gruppe) (offen)
- Nutze dafür sudo (offen)
Musterlösung anzeigen
sudo chown www-data:www-data /var/www/html/index.html /var/www/html/kontakt.html
ls -l /var/www/htmlEin möglicher Weg. Andere Wege sind genauso richtig, geprüft wird nur das Ergebnis. Kürzer geht es mit dem Platzhalter: sudo chown www-data:www-data /var/www/html/*. Ohne sudo meldet chown Operation not permitted.
Diese Aufgabe ist freiwillig, hier steht nicht genau, wie es geht. Lege den Ordner team an: Du darfst alles, deine Gruppe darf hineinschauen und hineinwechseln, alle anderen gar nichts. Lege darin die Datei plan.txt an: Du darfst lesen und schreiben, deine Gruppe nur lesen, alle anderen gar nichts.
Enter führt aus, Tab ergänzt Namen, Pfeil hoch holt frühere Befehle, Bild hoch blättert zurück. Esc und dann Tab verlässt das Terminal.
Ziele
- Lege den Ordner team an: du darfst alles, die Gruppe lesen und hineinwechseln, andere nichts (offen)
- Lege darin plan.txt an: du liest und schreibst, die Gruppe liest, andere nichts (offen)
Musterlösung anzeigen
mkdir team
chmod 750 team
touch team/plan.txt
chmod 640 team/plan.txt
ls -l teamEin möglicher Weg. Andere Wege sind genauso richtig, geprüft wird nur das Ergebnis. Der Ordner braucht rwxr-x--- = 750, die Datei rw-r----- = 640. Ohne x am Ordner könnte die Gruppe die Datei darin nicht lesen, selbst wenn die Datei es erlaubt.
Unter Windows
Jetzt selbst testen
Vier Fragen zum Abschluss. Du hast so viele Versuche, wie du willst.
ls -l zeigt -rw-r----- 1 syslog adm syslog. Wer darf die Datei lesen?
Welche Zahl entspricht rwxr-x---?
chown mia bericht.txt meldet Operation not permitted. Was ist die übliche Lösung?
Ein Ordner hat die Rechte rw-rw-rw-. Was passiert, wenn du cd ordner tippst?