next up previous contents
Next: GETNEXT-Funktionen Up: GET-Funktionen Previous: Process Group

User Group

Die Implementierung der User Group erstreckt sich auf die beiden Module 'user.c' und 'upage.c'. Hier ergab sich das Problem, daß es aufgrund der MIB-Definition möglich sein sollte, in der 'user table' bzw. in der 'group table' Tabellenzeilen zu erzeugen bzw. zu entfernen. Jede Tabellenzeile enthält ein Statusfeld, in dem angegeben ist, ob die Tabellenzeile dem System bekannt ist oder nicht. Dieses Feld wird auch benutzt, um Zeilen zu löschen bzw. dem System bekannt zu machen (siehe SET-Funktionen).

Die aktiven (dem System bekannten) Zeilen der 'user table' befinden sich in der lokalen Passwortdatei /etc/passwd. Von hier können sie mit Hilfe der Funktion 'local_getpwnam()' ausgelesen werden. Eventuell vorhandene, nicht aktive Zeilen müssen im Speicher aufbewahrt werden und dürfen nicht in der Passwortdatei erscheinen. Hierzu wurde eine dynamisch erzeugte, verkettete Liste von Passworteinträgen geschaffen, deren Startpunkt in einer globalen Variablen gespeichert bleibt. Beim Auslesen von Variablenwerten muß also sowohl die Passwortdatei als auch die im Speicher befindliche Liste nach dem entsprechenden Eintrag durchsucht werden. Bei der 'group table' verhält es sich analog.

Ein weiteres Problem ergab sich beim Auslesen der Quotas für die verschiedenen User. Es muß zuerst überprüft werden, ob der angegebene User existiert, dann muß nachgesehen werden, ob das gewünschte Filesystem vorhanden ist, bevor die Quotas bestimmt werden können. Da bei der Inaktivierung eines Users die Quotas der zu diesem Zeitpunkt gemounteten Filesysteme gespeichert werden, kann es zu Inkonsistenzen kommen, wenn später diese Filesysteme nicht mehr gemountet sind bzw. andere Filesysteme gemountet werden. Bei den Quotas ist weiterhin zu beachten, daß diese zum Teil in Blöcken, zum Teil aber auch in Kbyte angegeben werden. Deshalb ist an manchen Stellen eine Multiplikation bzw. Division mit zwei erforderlich.

Die 'who table' ergibt sich durch Auslesen der Datei /etc/utmp. Hierbei ist zu beachten, daß die Datei eventuell noch Einträge bereits ausgeloggter User enthalten kann. Einen ausgeloggten User erkennt man daran, daß statt einem Namen ein leerer String eingetragen ist, gleichgültig ob Werte für die anderen Variablen noch in der Datei vorhanden sind.


next up previous contents
Next: GETNEXT-Funktionen Up: GET-Funktionen Previous: Process Group
Copyright Munich Network Management Team