7. Der Dispatcher
Der Dispatcher wird als Server-Dienst auf einem Host installiert. Beim Start wird die Dispatcher Passwort-Datei anhand der auf dem Host eingerichteten Benutzer überprüft. Alle Benutzer, die nicht auf dem Host eingetragen sind, werden ignoriert. Dann hört er an einem Port und wartet auf Anfragen von einem Client.Der Client identifiziert sich mit einem Benutzernamen und einem Passwort. Der Dispatcher startet dann einen Daten-Server-Prozess mit dessen Benutzer ID. Der Client wird mit diesem verbunden und kommuniziert dann mit dem Daten-Server direkt.
Der Dispatcher wartet dann wieder auf neue Anfragen.
7.1 Setup
Der Dispatcher wird von Magic in dieses Verzeichnis installiert:/usr/magicadm/serversUns interessieren drei Dateien
- mgdispatch - der Dispatcher
- mgdatasrvr - der Daten-Server
- mgdatasrvr.rc - die Resourcen für den Daten-Server
- MGSERVER.INI - die Inidatei für den Daten-Server
Der Dispatcher läuft als System-Dienst, darum soll er auf keinen Fall "root" Berechtigungen haben. Dies läßt sich verhindern, in dem das Programm "magicadm" gehört und das "Set User ID" Bit gesetzt ist.
chmod 4500 mgdispatchDies bedeutet: wenn der Dispatcher keine "root" Berechtigung hat, dann kann nur mit "magicadm" Berechtigungen neue Prozesse starten.
chown magicadm mgdispatch
Der System Administrator möge entscheiden.
7.1.1 mgpasswd
Der Dispatcher verwendet, je nachdem von welchem Benutzer er gestartet wurde, verschiedene Passwort-Dateien und prüft beim Start verschiedene Bedingungen:Die mgpasswd Datei:
-
ist in "/usr/magicadm/etc/" und gehört "magicadm"
oder
ist in "/etc/" und gehört "root" - heißt "mgpasswd" und hat die Berechtigung "600".
- darf kein Symbolischer Link sein.
- darf nur existierende Benutzer beinhalten.
Ist die Datei nicht vorhanden, dann werden "rlogin" und "remote shell" Bedingungen angewendet.
Weitere Informationen sind:
Die mgpasswd Datei
- wird nur beim Start des Dispatcher gelesen.
- hat Passworte im Klartext, die nur für den Dispatcher gelten, nicht die Echten eingeben!.
- darf keine Leerzeichen am Ende eines Feldes/Zeile haben.
# Beispiel Passwortdatei
# Alle drei Felder werden von einem : beendet
# UserName:Password:[Host1[,Host2]:]
magicadm:dmagciam:192.168.0.1:
# Host 192.168.0.1 kann mit User magicadm Passwort dmagciam einlogen
meier::192.168.0.22:
# Host 192.168.0.22 kann mit User meier ohne Passwort einlogen
schulze:nix:
# Jeder kann mit User schulze Passwort nix einlogen
cheffe::192.168.0.1,192.168.18.1:
# Hosts 192.168.0.1 und 192.168.18.1 kann mit User cheffe ohne Passwort einlogen
7.2 Manueller Start
Vor dem Start des Dispatcher als "magicadm" einloggen und dann in das Dispatcher Verzeichnis gewechseln.cd /usr/magicadm/servers
./mgdispatch 2060
- 2060 - Der Port den der Dispatcher für sich registrieren soll, kann auf jede Nummer über 1000 geändert werden.
ps -A -l| grep mgdispatchAls User sehen wir die UID=501, das ist in diesem Beispiel die Benutzernummer von "magicadm" und als Prozess die PID=99880.F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
040 S 501 99880 1 0 60 0 - 357 wait_f pts/0 00:00:00 mgdispatch
Um ihn wieder zu stoppen:
kill 99880
7.3 Dispatcher und SuSE
Die System-Scripte befinden sich in dem Verzeichnis/sbin/init.d/Und es wird ein eigener Algorythmus verwendet. Der Wechsel eines Run-Levels wird mit dem Script
/etc/rc.configkontrolliert. Um den Start des Dispatcher mit diesem Script zu verwalten muß am Ende eine neue Sektion eingefügt werden:
---------- cut ---------Diese Einstellung kann mit "yast" in dem Menuepunkt
#
# Start the communication server mgdispatch (yes,no).
#
START_MGDISPATCH="yes"
#
---------- cut ---------
Administration des System -> Konfigurationsdatei verändernbearbeitet werden.
Jetzt muß "mgcss" aus dem Archiv nach "/sbin/init.d/" kopiert und die Berechtigungen gesetzt werden:
chmod 4700 mgcssIn welchem Run-Level der Dispatcher gestartet werden soll, wird durch symbolische Links in den Unterverzeichnissen kontrolliert:
chown magicadm mgcss
- Starte und stoppe den Dispatcher in dem Run-Level 2
ln -s /sbin/init.d/mgcss /sbin/init.d/rc2.d/K92mgcss
ln -s /sbin/init.d/mgcss /sbin/init.d/rc2.d/S91mgcss - Starte und stoppe den Dispatcher in dem Run-Level 3
ln -s /sbin/init.d/mgcss /sbin/init.d/rc3.d/K92mgcss
ln -s /sbin/init.d/mgcss /sbin/init.d/rc3.d/S91mgcss
Wenn ein anderes Verzeichnis verwendet wurde, muß der Script angepaßt werden
---------- cut --------------Nun kann der Dispatcher gesteuert werden:
CS_PATH=/usr/magicadm/servers
CS_USER=magicadm
CS_PORT=2060
---------- cut --------------
/sbin/init.d/mgcss start
/sbin/init.d/mgcss stop
/sbin/init.d/mgcss status
/sbin/init.d/mgcss restart
7.4 Dispatcher und Red Hat
Die System Scripte befinden sich in dem Verzeichnis/etc/rc.d/init.d/und dort hin muß auch der Script "mgcsr" aus dem Archiv kopiert und die Berechtigungen gesetzt werden:
chmod 4700 mgcsrDer Start der System-Dienste wird mit dem Tool "chkconfig" gesteuert. Dazu sind in dem Script "mgcsr" am Anfang drei Zeilen (der "\" am Ende der zweiten Zeile verbindet sie mit der dritten Zeile und muß sein):
chown magicadm mgcsr
---------- cut --------------(Der Lizenz Manager (S91mglmr) sollte vor dem Dispatcher (S92mgcsr) gestartet werden. Und umgekehrt: der Dispatcher (K91mgcsr) sollte vor dem Lizenz Manager (K92mglmr) gestoppt werden. Für mehr Informationen : "man chkconfig".)
# chkconfig: 23 92 91
# description: Start des Dienstes in Run Level 2 & 3 als S92mgcsr \
# und beende ihn in den anderen Leveln mit K91mgcsr
---------- cut --------------
Den Dispatcher als Service hin zufügen:
chkconfig --add mgcsrDen Dispatcher als Service entfernen:
chkconfig --list mgcsrAusgabe: "mgcsr 1:off 2:on 3:on 4:off 5:off 6:off"
chkconfig --del mgcsrDer Script "/etc/rc.d/rc" steuert den Wechsel eines Run-Levels. Der prüft alle symbolischen Links mit einem "K" am Anfang "K92mgcsr" und testet ob in dem Verzeichnis "/var/lock/subsys" eine dazugehörende Lock Datei mit dem Namen "mgcsr" vorhanden ist. Der Script "mgcsr" muß also beim Start eine Datei erstellen und beim Beenden wieder gelöschen. "magicadm" hat aber keine Berechtigung um in diesem Verzeichnis zu schreiben.
chkconfig --list mgcsrAnzeige= "mgcsr 1:off 2:off 3:off 4:off 5:off 6:off"
Um dieses Problem zu beheben muß "root" die Berechtigung für das Verzeichnis "/var/lock/subsys/" auf "search/execute others" ändern:
chmod o+x /var/lock/subsys/Wenn ein anderes Verzeichnis verwendet wurde, muß der Script angepaßt werden
---------- cut --------------Nun kann der Lizenz-Manager gesteuert werden:
CS_PATH=/usr/magicadm/servers
CS_USER=magicadm
CS_PORT=2060
---------- cut --------------
/etc/rc.d/init.d/mgcsr start
/etc/rc.d/init.d/mgcsr stop
/etc/rc.d/init.d/mgcsr status
/etc/rc.d/init.d/mgcsr restart
7.5 Dispatcher und Daten-Server
Der Daten-Server führt als erstes den Script "mgdatasrvr.rc" aus. Danach wird die "MGSERVER.INI" eingelesen.7.5.1 mgdatasrvr.rc
Dieses Script:- prüft ob Magic korrekt installiert wurde.
- setzt die Namen für die Log-Dateien.
- prüft ob ein User Verzeichnis existiert.
- liest Benutzer spezifische Einstellungen.
7.5.2 MGSERVER.INI
Es sollen nur Beispielhaft die notwendigen Einträge für den Zugriff auf lokale Dienste erläutert werden.Der Servername kann frei benannt werden. Dieser gleiche Name muß bei dem Client in der "magic.ini" in der "[MAGIC_SERVERS]" Sektion verwendet werden. Das heißt, wenn der Daten-Server auf dem Host "MGLINUX" läuft, dann kann er in der "[MAGIC_SERVERS]" Sektion auch "mgwebdaten" benannt werden. Es besteht kein zwingender Grund ihn nach dem Host zubennen. Es ist vielleicht sogar besser, ihn nicht nach dem Host zubennen, da es durchaus vorkommen kann, daß der Dienst auf einem andern Host ausgeführt werden muß. Und dann kann es sehr verwirrend sein, wenn der Daten-Server genauso heißt wie der gerade vom Netz genommen Host.
| [MAGIC_SERVERS] | |||
| ServerName = | 1,NONE, , , | server name is the name of the Magic logical
server: Any Magic client or server that wants to communicate with a server must use the same name in all the MGSERVER.INI files; communication type is a number with one of the following values: 1 is no communication (local),server address is set based upon the communication type setting: for communication type 1, local, the address must be 'NONE'; for communication type 2, TCP/IP, the address is as follows: hostname/port number where: the host name is the name of the host in the TCP/IP hosts repository, and port number is the port number on which the communication dispatcher is listening, as used when loading the dispatcher. For details on the Magic dispatcher see the operating system-specific subsection in this chapter. For communication type 3, DECnet, the address is as follows: DECnet-node-name/object-name where DECnet host name can be a DECnet node name as defined in the NCP database, or it can be a DECnet address. The Object name refers to a known Magic DECnet object name. This name is used to distinguish the server that will be invoked on the host machine. MG800GEN will activate the development server and MG800RNT will invoke the runtime server. For more information on DECnet client/server communication see the section in this chapter on the DECnet Server. username is the user account that is used for logging into the server: The server process will be created in the context of this user account. password is the password for the user account. Syntax :server name = communication type,server address,username,password |
|
| [MAGIC_DATABASES] | |||
| Default Database = | 4, , , , , , , , MagicRecordLock, ChangeFileInToolkit, CheckDefinition, CheckKey, FileLocks, , , , NoCheckExist, 0, | ||
| [MAGIC_LOGICAL_NAMES] | |||
| MagicDir = | /usr/magicadm | ||