| 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.
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:
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.
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.
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:
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.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).
UNIX
uid_t getuid(void);
gibt die Benutzer-ID des "Besitzers" des aktuellen Prozesses zurück
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.
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.
UNIX
gid_t getgid(void);
gibt die Group-ID des "Besitzers" des aktuellen Prozesses zurück
|   |
3: Grundkonzepte
| Startseite |
3.2: Dateisystem 
|
|   |