|
Prozeßhierarchie und Prozeßrechte
Ein Prozeß kann einen neuen Prozeß starten (fork, spawn); ein solcher
Prozeß heißt "Kindprozeß" oder "Sohnprozeß" (child process) und der Erzeuger-Prozeß wird "Elternprozeß" oder "Vaterprozeß" (parent process) genannt.- Jeder Kindprozeß hat genau einen Elternprozeß
- Ein Elternprozeß kann mehrere Kindprozesse besitzen
- Eltern- und Kindprozeß können miteinander kommunizieren
- Wird ein Elternprozeß beendet, beenden sich normalerweise auch alle seine Kindprozesse
Die Prozeßrechte sollen anhand des Betriebssystems UNIX erläutert
werden. Jeder Prozeß hat im Verlauf seiner Existenz zwei Benutzeridentifikationen:
Die "reale" Benutzer-ID bezeichnet den Benutzer, der für den Ablauf
des Prozesses verantwortlich ist. Sie bleibt in der Regel konstant. Die
"effektive" Benutzer-ID kann sich jedoch beliebig oft ändern und bestimmt
jeweils die momentanen Rechte des Prozesses in Bezug auf Dateizugriffe
und andere Mechanismen, die benutzerabhängigen Einschränkungen
unterliegen.
Die Änderung der effektiven Benutzer-ID kann auf zweierlei Art erfolgen:
Wenn der Prozeß ein Programm eines anderen Benutzers ausführen möchte,
dann prüft das Betriebssystem zuerst seine Berechtigung dazu (über
die entsprechenden Dateizugriffsrechte). Falls die Zugriffsrechte der Programmdatei
außerdem das sogenannte "setuid-Bit" enthalten, dann wird die effektive
Benutzer-ID des Prozesses mit der Eigentümerkennung des aufgerufenen
Programms überschrieben, und der Prozeß hat demzufolge
jetzt die Rechte des Eigentümers des Programms.
Die zweite Möglichkeit zur Veränderung der effektiven Benutzer-ID
ist der explizite Aufruf der Systemfunktion setuid(). So ist es möglich,
die effektive Benutzer-ID so zu verändern,
daß sie den Wert der realen Benutzer-ID erhält oder den Wert der
effektiven Benutzer-ID, die der Prozeß bei seiner Aktivierung von seinem
Vater "geerbt" hat.
|
|
|