Benutzerrechte und Dateiattribute unter Linux
-rw-r--r-- 1 stephan users 7298 Jan 31 21:12 pc.gif -rw-r--r-- 1 stephan users 890 Feb 17 22:46 posting.txt drwxr-xr-x 12 stephan users 4096 Feb 16 21:53 pro-linux drwxr-xr-x 2 stephan users 4096 Feb 21 19:09 seti -rw-r--r-- 1 stephan users 28961 Feb 15 20:19 startani.gif
Im obenstehenden Beispiel ist eine Liste von Dateien und Verzeichnissen zu sehen. Im ersten Block, dem ganz linken, sind die Dateiattribute zu sehen. Das erste Zeichen kennzeichnet, ob es sich bei dem aufgezählten Objekt um ein Verzeichnis oder um eine Datei handelt. Ist es ein Verzeichnis, so wird hier ein "d" (wie Verzeichnis, engl. Directory) gedruckt. Handelt es sich im eine Datei, so steht an dieser Stelle ein "-". Die Dateiattribute können entweder mit Buchstabenkürzeln (wie oben dargestellt) oder in Oktalzahlen angegeben werden.
Das erste Zeichen (in diesem Beispiel "d") spezifiziert die Art von Datei/Verzeichnis. "d" steht für "Directory". Hier wird gekennzeichnet, dass es sich um ein Verzeichnis handelt. Handelt es sich um eine normale Datei, wird ein "-" als Platzhalter angezeigt. Ist es ein Block-Device oder Char-Device steht hier ein 'b' oder 'c'. Für FIFOs steht ein 'p' wie PIPE oder ein 's' für Socket. Als nächstes werden die drei Attribut-Typen r (read/lesen), w (write/schreiben) und x (execute/ausführen) aufgeführt. Diese drei Typen erscheinen nun dreimal in Folge. Der erste Block kennzeichnet die Zugriffsrechte für den Eigentümer einer Datei. Der zweite Block kennzeichnet die Zugriffsrechte für die anderen Mitglieder der Benutzergruppe. Der letzte Block kennzeichnet die Zugriffrechte für alle anderen Anwender. Das Dateiattribut x (execute/ausführen) wird immer nur dann benötigt, wenn es sich um ausführbare Dateien handelt. Ist das Attribut x auf ein Verzeichnis gesetzt, so bedeutet dies, dass man in dieses Verzeichnis wechseln darf. Ist es nicht gesetzt, wird der Zugriff auf das Verzeichnis verwehrt. Dies alles scheint auf den ersten Blick etwas verwirrend zu sein. Daher will ich versuchen, es anhand einiger Beispiele klarer zu machen.
Man stelle sich vor, dass man einen Text geschrieben hat, der nur von einem selber bearbeitet werden soll. Andere Leute sollen diesen Text zwar lesen dürfen, aber keine Änderungen daran vornehmen. In diesem Fall bekommt man selber die Attibute für lesen und schreiben. (rw) und die anderen bekommen nur das Attribut "r" für Lesen zugewiesen.
Ein anderes Beispiel. Eine Familie hat einen gemeinsamen Internet-Computer. Aufgrund hoher Telefonkosten soll nun der Zugriff eingeschränkt werden. Mit Linux kein Problem. Zukünftig dürfen nur noch Vater oder Mutter das Internet aktivieren. Für beide, Vater und Mutter, wird jetzt eine eigene Benutzergruppe angelegt mit der Bezeichnung eltern. Nun muss das Dateiattribut des Onlineprogrammes so geändert werden, dass nur noch die Benutzergruppe eltern Zugriff auf dieses Programm hat. Da der Vater das Programm angelegt hat, wird er noch als Eigentümer der Datei angegeben. In diesem Fall sehen die Attribute wie folgt aus:
- rwx r-x ---
Der Vater darf nun das Programm aufrufen und auch modifizieren. Alle anderen Mitglieder der Benutzergruppe eltern, also in diesem Fall die Mutter ;-), dürfen das Programm nur ausführen, nicht aber ändern. Alle anderen Benutzer im Sytem haben keinen Zugriff auf das Online-Programm. In diesem Fall sind das wohl die Kinder.
Im nun folgenden Abschnitt wird Ihnen RvB erklären, wie man Benutzer und Benutzergruppen pflegt oder die Rechte auf Dateien ändert. Außerdem wird er Sie über die Dateiattribute außerhalb der Rechtetabelle aufklären. Das Ext2-Dateisystem kennt nämlich noch Attribute jenseits des UNIX-Standards.
Die Benutzerverwaltung
Wie Stephan schon gesagt hat ist das Arbeiten als "root" gefährlich. Somit will ich Ihnen jetzt erklären, wie Sie andere Benutzer anlegen/entfernen. Um Benutzer anzulegen, gibt es den useradd-Befehl, der folgende Optionen unterstützt:
| Option | Funktion |
| -c <kommentar> | Es kann ein Kommentar für den Benutzer festgelegt werden, z.B. sein voller Name |
| -d <Home-Verzeichnis> | Legt das Home-Verzeichnis des Benutzers fest |
| -e <AuslaufDatum> | Mit diesem Parameter kann im Format JJJJ-MM-TT festgelegt werden, wann sich der Benutzer automatisch löschen soll |
| -G <gruppe1,[gruppe2,gruppe3,...]> | Bestimmt, welchen Gruppen der Benutzer angehören soll, wobei die Gruppen-Liste mit Komma ohne Leerzeichen angegeben werden muss |
| -m | Wenn das Home-Verzeichniss nicht existiert, wird es angelegt und die Daten aus /etc/skel dort hinein kopiert |
| -M | Das Home-Verzeichnis wird auf keinen Fall vom System erzeugt, das muß der Superuser machen |
| -p<Passwort> | Legt ein Passwort fest |
| -s<Shell> | Setzt die Shell, die beim Einloggen automatisch gestartet wird. Dies ist üblicherweise /bin/bash oder /bin/csh. |
| -u<UID> | Hiermit kann festgelegt werden, welche Nummer der User bekommt. |
| <name> | Ist der Login-Name des Benutzers |
Als Beispiel dient, wie ich meinen Account erstellt habe:
useradd -c "Rene van Bevern" -d /home/rvb \ -G rvb,tty,lp,uucp -M -p sagichnich -s /bin/bash -u 500 rvb
Um Benutzer (im folgenden Fall mich) zu löschen, benutzt man:
userdel rvb
Das Ändern von Rechten
Das Ändern der Rechte auf Dateien geschieht mit dem chmod-Befehl. Diesem Befehl folgen Optionen, welche Rechte geändert werden sollen (alle, owner, group oder others), und die Rechte, schließlich die Datei, deren Rechte geändert werden sollen. Für den Befehl gibt es zwei wichtige Optionen:
| Option | Funktion |
| --reference=DATEI | Nimmt die Rechte der Datei DATEI und setzte diese auf die Datei, deren Rechte zu verändern sind |
| -R | Steigt auch in Verzeichnisse ab |
Den Optionen folgt die Angabe eines Parameters, der die Rechte angibt. Dieser kann aus drei Oktalzahlen oder aus einer Zeichenfolge bestehen. Bei den Oktalzahlen gilt:
| Wertigkeit | Recht |
| 4 | Lesen der Datei |
| 2 | Schreiben der Datei |
| 1 | Starten der Datei oder Wechseln in das Verzeichnis |
Grafische Darstellung der Dateiattribute:

Je nachdem, was man will, müssen diese Wertigkeiten addiert weden. So ist rwxr-xr-x gleichbedeutend mit der Oktalzahl 755 (das Oktalsystem hat die Basis 8), wobei die erste Ziffer für den Besitzer ist, die zweite für die Gruppe und die dritte für alle anderen. Will man die Rechte aber per Zeichenfolge setzen, muss man zuerst angeben, für wen das Recht geändert wird. Das sind u für den Besitzer, g für die Gruppe, o für alle anderen (other) und a steht für u, g und o. Am besten merkt man sich diese, indem man daraus ein aussprechbares Wort macht, so zum Beispiel "augo". Gefolgt von a, u, g oder o kommt ein "-", um ein Recht zu entfernen, ein "+", um ein Recht hinzuzufügen, oder ein "=", um genau das Recht zu setzen. Darauf folgt dann das Recht: r, w oder x. Als letzter Parameter kommt dann die Datei. Um eine Datei für den Besitzer lesbar, schreibbar, und startbar zu machen, für die Gruppe lesbar und für die anderen nur startbar könnte man also diese zwei Befehle nutzen:
chmod 741 datei.file oder chmod u=rwx,g=r,o=x datei.file
Hier einige Beispiele, wie man einer Datei ein spezielles Attribut hinzufügt bzw. entfernt:
chmod u+w datei.file
oder
chmod g-x datei.file

