Axel Rogat
Betriebssysteme und betriebssystemnahes Programmieren
 
3: Grundkonzepte Kapitel 3 3.2: Dateisystem 
 
  3.1 Mehrbenutzersysteme  
 

Wenn ein System von mehreren Personen genutzt werden soll oder gar in einem Netzwerk zugänglich ist, ist es im Hinblick auf Datensicherheit unerläßlich, eine Benutzer-Verwaltung in irgendeiner Form zu realisieren. Ressourcen (hauptsächlich Dateien) sind dann einem bestimmten Besitzer zugeteilt, der allein auf sie zugreifen kann oder bestimmten kann, wer sonst dieses Recht besitzen soll.

Die Angaben in diesem Abschnitt beziehen sich zunächst meist auf UNIX. Auf Windows-Spezialitäten wird später eingegangen.

3.1.1 Benutzer

Ein Account auf einem System ist eine Zugangsberechtigung, vergleichbar mit einem Konto, was Rechenzeit, Hauptspeicher- und Datei-Verbrauch angeht. Der Besitzer eines Accounts heißt Benutzer (User).

Zur Überprüfung der Identität eines Benutzers muß dieser sich üblicherweise beim System mit seinem Benutzernamen (Login Name, User Name, 3 bis 8 Buchstaben) anmelden (einloggen, log-in) und durch die Eingabe eines Paßworts ausweisen. (Mehr zu Paßwörtern später im Abschnitt zur Systemverwaltung.)

Für jeden Benutzer können spezielle Einstellungen an dessen Arbeitsumgebung getätigt werden, wie z.B. der "Eintrittsort" in das Dateisystem, automatisches Starten von Programmen (insbesondere von grafischen Oberflächen), etc.

Unter UNIX werden für die Benutzer Nummern vergeben ("User ID", UID), anhand derer sie unterschieden werden. Dateien erhalten beispielsweise als besonderes Attribut die UID des erzeugenden Benutzers.

Oft sind nicht nur echte Personen "Benutzer" mit einer UID. Auch speziellen Prozessen (wie Dämonen, Server) oder Prozeßgruppen, die regelmäßig oder permanent im Hintergrund arbeiten, wird oft eine eigene UID gegeben. Sie erhalten meist Nummern von 1 bis 99, der Administrator erhält 0, normale Benutzer Nummern von 100 bis 50000.

Die "eigene" Benutzer-ID erfährt man durch folgenden Systemaufruf:

UNIX
uid_t getuid(void);
  gibt die Benutzer-ID des "Besitzers" des aktuellen Prozesses zurück

Das Angeben bzw. Wechseln des Paßworts ist von System zu System unterschiedlich. In UNIX kann jeder Benutzer mit dem Kommando passwd (oder systemabhängig bei Rechnernetzen auch yppasswd, nispasswd, o.ä.) sein Paßwort ändern, eventuell allerdings nicht beliebig schnell hintereinander. Möglicherweise wird auch ein "Paßwort-Aging" verwendet, das bei zu alten Paßwörtern zunächst warnt und sie schließlich für ungültig erklärt.

Das Paßwort soll 6 bis 8 Stellen haben und mindestens zwei Buchstaben und eine Ziffer enthalten. Viele Versionen von passwd lassen sich aber auch zu Paßwörtern überreden, die sich nicht an diese Konvention halten, wenn man es nur lange genug versucht.

Unter UNIX gibt es auch "spezielle User" oder Pseudo-User, die nicht wirklichen Personen entsprechen. Beispielsweise hat der Benutzer lp Zugriff auf die druckerbezogenen Strukturen, der Benutzer uucp auf das UUCP-System (zum Datei- und Mailaustausch), etc. Auf diese Weise braucht man (aus Sicherheitsgründen) den passenden Prozessen nicht gleich alle Rechte eines Administrators zu geben.

Genaueres zu Grundsätzen bei der Verwaltung mehrerer Benutzer folgt später im Kapitel zu Systemverwaltung.

3.1.2 Der Administrator

Unter einem System-Administrator versteht man üblicherweise eine Person, die dafür verantwortlich ist, daß sich das System zu jeder Zeit in einem einwandfreien, benutzbaren Zustand befindet. Im Hinblick auf die Konsistenz des Systems hat sich herausgestellt, daß es sinnvoller ist, einer einzelnen Person diese Verantwortung zu übertragen, und nicht einer kleinen Gruppe.

Er

Der Administrator sollte sich nur zum Zweck administrativer Arbeiten als solcher beim System anmelden. Durch seine umfassenden Rechte könnte er sonst leicht unabsichtlich Inkonsistenzen erzeugen oder Daten zerstören!

Der Status des Administrators spiegelt sich meist auf Systemebene in Form eines speziellen Benutzers mit besonderen Rechten wieder. Unter UNIX gibt es dazu den Benutzer root, der auch Super-User genannt wird.

Der Superuser kann unter anderem folgendes:

Genaueres zu den speziellen Rechten der Administratoren erfahren wir später z.B. in den Kapiteln über Dateisysteme und Systemverwaltung.

3.1.3 Identitätswechsel

Bei einigen Systemen kann man seine Identität nur durch Verlassen und Wiedereinloggen verändern (Windows 95 o.ä.). Unter UNIX kann man mit dem Systemkommando "su username" (set user, substitute user) kann ein Benutzer zwischenzeitlich seine Identität ändern. Das hat Auswirkungen nur auf den Prozeß, der das su absetzt (und auf dessen Kinder).

3.1.4 Benutzergruppen

Innerhalb einer Arbeitsgruppe ist es sinnvoll, wenn nicht alle Benutzer alle ihre Daten vor den anderen verstecken. Einige Daten, die für alle Mitglieder sinnvoll sind, sollten auch für alle sichtbar und zugreifbar sein.

Entsprechend werden Benutzer unter UNIX in Benutzer-Gruppen zusammengefaßt. Für jede Datei kann festgelegt werden, welche Rechte die anderen Mitglieder der Gruppe (neben dem Besitzer der Datei) haben sollen.

Ein Benutzer kann Mitglied beliebig vieler Gruppen sein, ein Prozeß ist dagegen eindeutig einem Benutzer und einer Gruppe zugeordnet (nur wenige UNIXe erlauben auch mehrfache Gruppenzugehörigkeit von Prozessen). Wenn ein Benutzer seine aktuelle Gruppenzugehörigkeit verändern will, kann er das mit dem Kommando "newgrp grpname" tun. Eventuell muß dazu das Gruppenpaßwort eingegeben werden.

Wenn ein System mehrere Administratoren hat, kümmert sich meistens ein Administrator um ganze Gruppen. Die entsprechende Zuordnung Gruppe --> Administrator wird auch (allein für Informationszwecke) im System festgelegt.

Auch die Gruppen erhalten eine Nummer, die "Group ID" (GID). Die eigene fragt man mit folgendem Systemaufruf ab:

UNIX
gid_t getgid(void);
  gibt die Group-ID des "Besitzers" des aktuellen Prozesses zurück

Die Nummern 0 bis 99 sind wieder intern reserviert, 100 ist meist eine Sammelnummer für Normalbenutzer. Die Zahlen 101 bis 50000 können frei verwendet werden.

Wie es "spezielle Benutzer" gab, so gibt es auch "spezielle Gruppen". Beispielsweise hat die Gruppe tty Zugriff auf alle Terminals, lp auf die Drucker, etc. Entsprechende Programme laufen mit solchen Gruppenzugehörigkeiten.

Durch Gruppen kann man auch den Zugriff normaler Benutzer auf bestimmte Programme einschränken. Beispielsweise ordnet man alle Programme und Dateien einer bestimmten Anwendung einer Gruppe desselben Namens zu, etwa dbase oder netscape (siehe den folgenden Abschnitt über das UNIX-Dateisystem). Benutzer, die auf diese Programme zugreifen wollen, müssen zur entsprechenden Gruppe gehören. Das bedeutet keine Einschränkung, da ja Benutzer beliebig vielen Gruppen angehören können.

 
3: Grundkonzepte Startseite 3.2: Dateisystem