Nach einem Update auf openSUSE Leap 16.0 startet ein Informix-Server,
der in der sqlhosts mit einem Servicenamen konfiguriert ist,
nicht mehr auf dem erwarteten Port. Zusätzlich werden Client-Verbindungen
mit Fehler -956 „Client host or user is not trusted by the server“
abgewiesen, weil /etc/hosts.equiv fehlt.
Mit Leap 16.0 hat openSUSE den Weg der Trennung von
Distribution-Defaults (/usr/etc) und lokalen Overrides (/etc)
konsequent umgesetzt:
/etc/services ist nur noch eine **leere Dummy-Datei** und soll künftig ganz entfallen. Der eigentliche Inhalt liegt jetzt unter /usr/etc/services. Das Paket netkit-rsh / rsh-server ist abgelöst durch **OpenSSH**. Dadurch werden die klassischen Trust-Dateien /etc/hosts.equiv und /etc/hosts.lpd **nicht mehr automatisch angelegt**.
Quellen:
Enthält $INFORMIXDIR/etc/sqlhosts einen Servicenamen statt einer
Portnummer, z. B.:
ol_azur onsoctcp azur.local sqlexec
… dann löst Informix über getservbyname() gegen /etc/services auf.
Unter Leap 16.0 ist diese Datei leer, der Start schlägt mit Meldungen wie
listener-thread: err = -25595: oserr = 0: errstr = ...: Service not found
fehl bzw. der Server bindet nicht auf dem erwarteten Port.
Informix prüft eingehende Verbindungen standardmäßig gegen eine Trusted-Hosts-Datei:
/etc/hosts.equivonconfig über REMOTE_SERVER_CFG konfigurierte Datei~/.rhosts des Zielusers
Fehlt /etc/hosts.equiv komplett, meldet der Client:
-908 Attempt to connect to database server (...) failed. -956 Client host or user (...) is not trusted by the server.
Am robustesten: den Servicenamen durch die numerische Portnummer ersetzen.
Damit entfällt die Abhängigkeit von /etc/services vollständig.
ol_azur onsoctcp azur.local 9088
Eintrag für Informix manuell ergänzen (auf Server und Client):
sqlexec 9088/tcp sqlexec-ssl 9089/tcp
Wahlweise als Override in /etc/services (wird gegenüber
/usr/etc/services vorgezogen) oder als Drop-in.
9088/tcp (sqlexec), 9089/tcp (sqlexec-ssl).
Datei /etc/hosts.equiv mit den vertrauenswürdigen Hosts neu anlegen:
# hostname user client1.local informix client1 informix 10.0.0.15 informix
Zwingende Voraussetzungen (laut IBM Docs):
informix:informix0644, 0640, 0444 oder 0440touch /etc/hosts.equiv chown informix:informix /etc/hosts.equiv chmod 0644 /etc/hosts.equiv
Seit Informix 11.70 kann die Trusted-Hosts-Datei über die onconfig
umgelenkt werden – damit ist kein Root-Zugriff auf /etc/hosts.equiv
nötig und das Problem ist zukunftssicher gelöst:
In $INFORMIXDIR/etc/onconfig:
REMOTE_SERVER_CFG trusted_hosts.cfg
Dann Datei $INFORMIXDIR/etc/trusted_hosts.cfg mit den erlaubten
Hosts füllen. Änderungen lassen sich im laufenden Betrieb übernehmen:
onmode -wf REMOTE_SERVER_CFG=trusted_hosts.cfg
# Existiert /etc/services und hat es Inhalt? ls -l /etc/services /usr/etc/services getent services sqlexec # Kann Informix den Servicenamen auflösen? su - informix -c "getent services sqlexec" # Trusted-Host-Datei prüfen ls -l /etc/hosts.equiv $INFORMIXDIR/etc/hosts.equiv 2>/dev/null onstat -g cfg | grep REMOTE_SERVER_CFG
/etc/services nur noch als Dummy aus – echter
Inhalt liegt in /usr/etc/services.
/etc/hosts.equiv fehlt, da rsh durch OpenSSH ersetzt wurde.sqlhosts undbei Trusted-Connections (Fehler -956) nach dem Update.
sqlhosts verwenden, /etc/hosts.equiv wiederherstellen oder auf REMOTE_SERVER_CFG umstellen.Informix, openSUSE Leap 16, sqlhosts, /etc/services, hosts.equiv, REMOTE_SERVER_CFG, Fehler -956, Trusted Host