Linux-Praxisbuch/ Benutzerverwaltung

Dieses Kapitel führt in das Benutzerkonzept von Linux ein. Die Benutzerverwaltung sowie alle daraus resultierenden Aufgaben werden in späteren Kapiteln ausführlich behandelt. Die Grundlagen zum Benutzer- und Berechtigungskonzepte unter Linux werden in diesem Kapitel erklärt.


Grundlagen

Zu den wichtigsten Eigenschaften von Linux zählt sicher die Fähigkeit zu echtem Multitasking und zum Multiuser-Betrieb. "Multitasking" bedeutet dabei, dass mehrere Prozesse (englisch "tasks") parallel ablaufen, und sich dabei die vorhandenen Ressourcen teilen. "Multiuser" bedeutet, dass mehrere Benutzer gleichzeitig am System arbeiten und damit die Multitasking-Fähigkeiten des Systems nutzen können. Hierbei trennt das Betriebssystem die einzelnen Benutzer, die von diesen Benutzern gestarteten Prozesse/Tasks sowie die von ihnen angelegten Dateien und Verzeichnisse voneinander und kontrolliert restriktiv den Zugriff darauf.

In der Windows-Welt ist dieser Multiuser-Betrieb wenig bekannt. Zwar ist es auch unter Windows z. B. möglich, mehrere Benutzer auf demselben System anzulegen. Diese können im Normalfall aber nicht gleichzeitig an diesem System arbeiten.

Vorteile von Multiuser-Systemen

Für Privatanwender scheint ein Multiuser-System zunächst wenig vorteilhaft zu sein. In erster Linie denkt man bei solchen Systemen sicher an Server, auf die über Shell-Accounts, FTP, Internet usw. viele Kunden gleichzeitig zugreifen können. Trotzdem bringt dieses Konzept auch für "normale" Anwender entscheidende Vorteile: Ein Multiuser-System ist eine gute Basis für diszipliniertes Arbeiten. Man kann z. B. sehr genau beobachten, unter welchem Account man welche Aufgaben erledigt.

Es bietet eine wesentlich höhere Sicherheit als ein "Single-User-System", da die Zugriffsrechte auf Daten, Prozesse etc. je nach Benutzer und Nutzergruppe kontrolliert und eingeschränkt werden können. Dadurch ist es z. B. möglich, dass ein Virus nur Zugriff auf die Daten desjenigen Benutzers erhält, über den er in das System gelangt ist. Voraussetzung dafür ist natürlich das bereits genannte disziplinierte Arbeiten.

Das Benutzerkonzept von Linux

Unter Linux werden alle Benutzer, die zur Arbeit am System berechtigt sein sollen, zu Benutzergruppen zusammengefasst. Alle Ressourcen können nun für bestimmte Gruppen oder Benutzer freigegeben werden. Diese Rechtevergabe beruht auf:

User-ID (uid)              Dies ist die ID, mit der sich ein Benutzer am System anmeldet. 
effektive User-ID (euid)   Dies ist die ID, mit der ein Benutzer auf eine Ressource zuzugreifen versucht. 
Group-ID (gid)             Dies ist die ID, mit der sich eine Gruppe am System anmeldet. 
effektive Group-ID (egid)  Dies ist die ID, mit der eine Gruppe auf eine Ressource zuzugreifen versucht. 

Für die Zugriffskontrolle überprüft das System bei jedem Zugriff auf eine Ressource, unter welcher effektiven uid und guid der Zugriff erfolgt. Durch diese Unterscheidung von ID und effektiver ID ist es z. B. möglich, dass ein Benutzer zwar unter seiner eigenen uid arbeitet, zugleich aber (temporär) auf Dateien zugreift, die anderen Gruppen gehören.

Beispiel: Wird das Passwort eines Benutzers geändert, so muss das Programm passwd z. B. auf die Datei /etc/shadow zugreifen. Normalerweise ist kein Benutzer berechtigt, auf diese Datei zuzugreifen. Trotzdem kann das Programm passwd diese Datei lesen, da es während dieses Vorganges einmal von der uid des aufrufenden Benutzers zur uid von root wechselt und damit über alle notwendigen Rechte verfügt. Dies ist möglich, da bei der ausführbaren Datei /usr/bin/passwd das Bit "set uid" gesetzt ist (in der folgenden Codezeile wird dies durch das erste "s" angezeigt):

user@linux ~/temp$ ls -al /usr/bin/passwd 
-rwsr-xr-x    1 root     root        24680 Apr  7 17:59 	

Weitere Informationen hierzu finden Sie mit "info chmod" und "man chmod". Mehr Information zu man und info finden Sie im Kapitel Linux Hilfe.

Wichtige Befehle

ls -al - Anzeigen von Datei- und Verzeichniseigenschaften

Beispiel:

user@linux ~/temp$ ls -al 
total 8
drwxr-xr-x    2 hede     hede         4096 Jul 10 07:25 .
drwxr-xr-x    8 hede     hede         4096 Jul 10 07:25 ..
-rw-r--r--    1 hede     hede            0 Jul 10 07:25 test.txt 	

Die Datei test.txt gehört dem Benutzer hede und der Gruppe hede. Der Eigentümer hat Lese- und Schreibzugriff auf die Datei, während die Gruppe und alle anderen Benutzer die Datei nur lesen dürfen.

chmod - Ändern der Dateizugriffsrechte

Beispiel: Das folgende Shellkommando bestimmt, dass alle Mitglieder der Gruppe auch Schreibzugriff auf die Datei erhalten und andere Benutzer sie nicht lesen dürfen:

user@linux ~/temp$ chmod 660 test.txt 

Überprüfung:

user@linux ~/temp$ ls -al 
total 8
drwxr-xr-x    2 hede     hede         4096 Jul 10 07:25 .
drwxr-xr-x    8 hede     hede         4096 Jul 10 07:25 ..
-rw-rw----    1 hede     hede            0 Jul 10 07:25 test.txt 	

chown - Ändern des Eigentümers und der Gruppenzugehörigkeit von Dateien und Verzeichnisse

Test:

user@linux ~/temp$ ls -al 
total 8
drwxr-xr-x    2 hede     users         4096 Jul 10 07:25 .
drwxr-xr-x    8 hede     users         4096 Jul 10 07:25 ..
-rw-rw----      1 user      users               0 Jul 10 07:25 test.txt 	

Die folgende Codezeile ändert den Besitzer der Datei:

user@linux ~/temp$ chown hede.users test.txt 
user@linux ~/temp$ ls -al 
total 8
drwxr-xr-x    2 hede     users         4096 Jul 10 07:25 .
drwxr-xr-x    8 hede     users         4096 Jul 10 07:25 ..
-rw-rw----      1 hede     users               0 Jul 10 07:25 test.txt 	

Um den Eigentümer und die Gruppe zu ändern, braucht man ausreichende Rechte. Meist müssen derartige Änderungen also vom root-Benutzer vorgenommen werden. Grundsätzlich können sie nur von einem Angehörigen derjenigen Gruppe durchgeführt werden, die zum Eigentümer der Datei erklärt werden soll.

chgrp - Ändern der Gruppenzugehörigkeit von Dateien oder Verzeichnissen

Auch mit diesem Befehl kann man die Gruppenzugehörigkeit von Dateien und Verzeichnissen ändern. Soll nun die Gruppe users der Eigentümer der Datei test.txt werden, geht man folgendermaßen vor:

user@linux ~/temp$ chgrp users test.txt 

Nachweis:

user@linux ~/temp$ ls -al 
total 8
drwxr-xr-x     2 hede      hede          4096 Jul 10 07:25 .
drwxr-xr-x     8 hede      hede          4096 Jul 10 07:25 ..
-rw-rw----     1 hede      users            0 Jul 10 07:25 test.txt 	

Auch diese Änderung kann nur von einem Benutzer vorgenommen werden, der über die erforderlichen Rechte verfügt.

id - Ermitteln der effektiven UIDs und GIDs

Mit dem Befehl "id" kann man ermitteln, unter welcher UID man eingeloggt ist, zu welchen Gruppen man gehört, welche die primäre Gruppe ist usw.:

user@linux ~/temp$ id 
uid=1000(hede) gid=1000(hede)
groups=1000(hede),25(floppy),100(users) 	

groups - die Gruppenzugehörigkeit ermitteln

Mit dem Befehl groups kann man anzeigen lassen, welchen Gruppen man angehört:

user@linux ~/temp$ groups 
hede floppy users 	

Diese Informationen kann man auch für andere Benutzer anzeigen lassen:

user@linux ~/temp$ groups root 
root : root 	

w - Angemeldete Benutzer ermitteln

Der folgende Befehl zeigt an, wer momentan beim System angemeldet ist:

user@linux ~/temp$ w 
07:37:58 up 15 days, 49 min,  5 users, load average: 0.05, 0.08 0.03
USER   TTY      FROM      LOGIN@   IDLE   JCPU   PCPU   WHAT
root   tty1     -         25Jun02  6:20   0.82s  0.82s  -bash
hede   tty2     -         02Jul02  7days  0.30s  0.30s  -bash
hede   tty3     -         Thu16    5days  0.21s  0.21s  -bash
hede   pts/0    www2      Mon11    3.00s  3.94s  3.45s  vim t.txt
hede   pts/1    www2      07:32    0.00s  0.13s  0.06s  w 	

Damit kann man also auch erkennen, wer sich von wo aus angemeldet hat und was die einzelnen Benutzer gerade machen.


Eine verkürzte Information liefert der Befehl who:

user@linux ~/temp$ who 
root     tty1         Jun 25 06:49
hede     tty2         Jul  2 07:47
hede     tty3         Jul  4 16:28
hede     pts/0        Jul  8 11:45 (www2.sentec-elektronik.de)
hede     pts/1        Jul 10 07:32 (www2.sentec-elektronik.de) 	

Um zu ermitteln, unter welcher ID man selbst angemeldet ist, gibt man den Befehl whoami ein. Dieser zeigt aktuelle uid an:

user@linux ~/temp$ hede@www:~/temp$ whoami 
hede

Informationen über laufende Prozesse, offene Dateien etc. ermitteln

Mit "lsof" ("list open files") kann man herausfinden, welche Dateien im Moment geöffnet sind, und wer sie geöffnet hat. "ps aux" zeigt die laufenden Prozesse sowie zusätzliche Informationen über Eigentümer, Ressourcenverbrauch usw. an.

Benutzerverwaltung

Die folgenden Befehle dienen der Benutzerverwaltung, also dem Anlegen, Ändern und Löschen von Benutzern und Gruppen:

useradd 	Neuen Benutzer anlegen 	
usermod 	Existierenden Benutzer ändern 	
groupadd 	Gruppe anlegen 	
groupmod 	Existierende Gruppe ändern 	

Die einzelnen Distributionen bieten darüber hinaus noch weitere Möglichkeiten, diese Verwaltungsaufgaben zu erledigen. So stellt z. B. Debian die Tools adduser, addgroup, deluser, delgroup bereit. Unter SuSE Linux kann man diese Aufgaben auch bequem mit yast erledigen.

Hinweise

Hier folgen noch ein paar Hinweise zur Arbeit mit dem Benutzerkonzept: Man sollte grundsätzlich nur dann als root arbeiten, wenn es unbedingt notwendig ist. Dadurch wird gewährleistet, dass man nicht aus Versehen wichtige Dateien löscht. Alle Prozesse (also z.B. auch Mail-Tools), die unter dem root-Account laufen, können uneingeschränkt auf das ganze System zugreifen. Tritt dabei ein Fehler auf oder enthält das Programm z. B. potenziell schädlichen Code, so ist das gesamte System gefährdet! Alle Dienste und Server sollten mit möglichst wenigen Rechten betrieben werden. Dieses Verhalten ist bei den meisten Systemen als Standard voreingestellt. Als Benutzer sollte man sich gut überlegen, welche Zugriffsrechte man Dateien und Verzeichnissen gibt. Mit einer behutsamen Rechtevergabe schützt man nicht nur die eigene Privatsphäre, sondern auch die Sicherheit des Systems.