Binden von Ports < 1024 auf
UNIX
Mit dem Internet Communication Manager (ICM) /SAP Web Dispatcher können Sie auch auf UNIX privilegierte Ports mit Portnummer 0 bis einschließlich 1023 (well known ports) binden. Dazu wird das externe Bindeprogramm icmbnd mit ausgeliefert.
Im Standardfall bindet der ICM / Web Dispatcher die Ports selbst. Sollen konfigurierte Ports von icmbnd gebunden werden, ändern Sie die Parameterspezifikation für icm/server_port_<xx> im Profil.
icm/server_port_<xx> = PROT=<Protokoll>, PORT=<Port>, TIMEOUT=<timeout>, EXTBIND=1
Auf einem UNIX-System können nur Benutzer mit den Superuser-Berechtigungen Ports < 1024 binden. Daher muss entweder der ICM-Prozess mit diesen Rechten ausgestattet werden, oder der Port muss von einem externen Programm gebunden und der Listensocket dann an den ICM übertragen werden.
Aus Sicherheitsgründen sollte der ICM mit den Standardberechtigungen des <sid>adm-Benutzers des SAP-Systems laufen. Mit diesen Berechtigungen können alle Ports > 1023 gebunden werden, sofern sie nicht schon durch ein anderes Programm gebunden sind. Um Ports < 1024 binden zu können, wird icmbnd direkt vom ICM gestartet, der Port wird von icmbnd gebunden und der Listensocket an den ICM weitergereicht. Dazu muss icmbnd mit den folgenden Superuser-Berechtigungen ausgestattet werden:
chown root:sapsys icmbnd
chmod 4750 icmbnd
Mit dem Befehl ls -al sehen Sie dann die Berechtigungen für icmbnd. Sie sollten so aussehen:
rwsr-x 1 root sapsys 1048044 Mar 20 16:19 icmbnd
Damit der ICM nicht versucht, den Port selbst zu binden, geben Sie eine zusätzliche Option bei der Konfiguration der Ports mit icm/server_port_<xx> an: EXTBIND=1
Das Format für diesen Parameter hat damit die Form:
PROT=<Protokollname>, PORT=<Port oder Servicename> [, TIMEOUT=<keep alive timeout>, EXTBIND=1]
TIMEOUT und EXTBIND sind optional.

icm/server_port_1 = PROT=HTTP, PORT=8080, TIMEOUT=30, EXTBIND=1

§ In der Regel wird icmbnd direkt vom ICM aus aufgerufen, allerdings kann das Programm auch von extern aufgerufen werden, um neue Ports dem ICM bekannt zu machen. icmbnd kann natürlich auch zum Binden von Ports >= 1024 genutzt werden, jedoch verlängert sich dadurch die Startup-Zeit des ICM.
§ icmbnd ist auch für Windows verfügbar. Da der Benutzer <sid>adm auf diesem System jedoch beliebige Ports binden kann, ist der Einsatz hier nicht sinnvoll.
icmbnd ist das Hilfsprogramm für den ICM zum Binden von Ports.

icmbnd -S <server port> -l <listen port> -p <protocol> -k <keep alive> -t <trace level> -f <trace file>] -v[ersion]

icmbnd kann natürlich auch zum Binden von Ports >= 1024 genutzt werden, dir Startup-Zeit des ICM verlängert sich aber dadurch. icmbnd ist auch für Windows verfügbar. Da der Benutzer <SID>adm auf diesem System jedoch beliebige Ports binden kann, ist der Einsatz hier nicht sinnvoll.

Damit das Executable icmbnd
gefunden wird, muss einer der beiden Parameter SAPSYSTEMNAME bzw. exe/icmbnd
(Dateipfad für icmbnd, analog zu
exe/icman) im
Profil gesetzt sein. Alternativ dazu können Sie auch die Variable
DIR_EXECUTABLE setzen (vgl.
Beispiel: Profildatei
eines SAP Web Dispatchers).
Dieses Programm hat die folgenden Parameter:
Parameter |
Beschreibung |
optional/obligatorisch |
-S <Server-Port> |
Administrationsport des ICM, über den der Listensocket von icmbnd an den ICM übertragen wird. |
obligatorisch |
-l <Listen-Port> |
Port, der von icmbnd gebunden werden soll. Dies kann eine Portnummer oder ein Portname sein (z.B. HTTP, SMTP, NNTP). |
obligatorisch |
-p <Protokoll> |
Angabe des Protokolls für den zu bindenden Port (z.B. HTTP, HTTPS, SMTP). |
obligatorisch |
-k <keep alive> |
Angabe des keep-alive-Timeouts (in Sekunden) für den zu bindenden Port. Wenn dieser Parameter nicht angegeben wird, wird der Standardwert des ICM übernommen. |
optional |
-t <Trace-Level> |
Angabe des Trace-Levels (1-3). Standardwert ist 1. |
optional |
-f <Trace-File> |
Angabe des Namen des zu benutzenden
Trace-Files. |
optional |
-v [version]
|
icmbnd gibt die aktuelle Versionsinformation aus und beendet sich dann. |
optional |
Die folgenden Fehler können auftreten und werden von icmbnd protokolliert:
· Missing argument for option <option>
Notwendiges Argument wurde auf der Kommandozeile nicht angegeben.
· Illegal option <option>
Es wurde ein ungültiges Argument angegeben.
· Missing values for Service, listen port or protocol
Eine der (obligatorischen) Optionen -S -l oder -p wurde nicht angegeben.
· IcmConnect to port %d failed (rc=%d)
Eine Verbindung zum ICM auf der Portnummer des Arguments -S <server port> konnte nicht erstellt werden. Bitte prüfen Sie die Angabe des Parameters -S <server port>.
· NiBuf2Listen failed(rc=%d)
Listen Port konnte nicht gebunden werden. Entweder fehlen die Berechtigungen zum Binden oder der Port ist bereits von einem anderen Programm gebunden.
· IcmBndSendHdl failed (rc = %d)
· NiSendHandle failed (rc = %d)
Der Listensocket konnte nicht zum ICM übertragen werden (Kommunikationsfehler).
Siehe auch:
Weiterführende Informationen finden Sie auf folgenden Man-Pages:
chown, chmod, getuid, setreuid, seteuid, setfsuid