Mit der Installation von Sun ONE Application Server als Bestandteil der Solaris-Installation sind verschiedene Probleme verbunden:
Alle Anwendungsserver- und Administrationsserverinstanzen werden beim Solaris-Systemstart automatisch gestartet. In vielen Umgebungen ist ein solch automatischer Start während des Solaris-Systemstarts nicht für alle Instanzen vorgesehen. Durch das Starten aller definierten Instanzen kann der verfügbare Systemhauptspeicher stark belastet werden.
Wenn Anwendungsserver- und Administrationsserverinstanzen automatisch gestartet werden, bedeutet dies, dass die einzelnen Startskripten als root ausgeführt werden. Durch die Ausführung von Startskripten für Instanzen im Besitz von Nicht-root-Benutzern können solche Benutzer die Startskripten auf Instanzebene ändern und so Zugriff auf den root-Benutzer erhalten.
Bei der Installation von Sun ONE Application Server werden auch das Skript /etc/init.d/appserv sowie die symbolischen Links zu den Skripten S84appserv und K05appserv in den /etc/rc*.d/-Verzeichnissen installiert. Diese Skripten sind dafür verantwortlich, dass alle Anwendungsserver- und Administrationsserverinstanzen, die als Bestandteil der Anwendungsserver-Installation definiert sind, automatisch mit Solaris gestartet und beendet werden.
Das Skript /etc/init.d/appserv umfasst folgenden Abschnitt:
case "$1" in 'start') /usr/sbin/asadmin start-appserv ;; 'stop') /usr/sbin/asadmin stop-appserv ;;
Die Ausführung des Befehls asadmin start-appserv bewirkt, dass die in allen Verwaltungsdomains definierten Administrationsserver- und Anwendungsserverinstanzen beim Solaris-Systemstart ebenfalls gestartet werden. Da die Systemstart- und Systembeendigungsskripten als root ausgeführt werden, werden auch die Startskripten für alle Anwendungsserver- und Administrationsserverinstanzen als root ausgeführt. Das Startskript für eine Instanz heißt startserv und befindet sich in Instanzverzeichnis/bin/startserv. Instanzen können Eigentum von Nicht-root-Benutzern sein, und folglich könnten diese Benutzer die startserv-Skripten manipulieren, um Befehle als root-Benutzer auszuführen.
Wenn eine Instanz einen privilegierten Netzwerkanschluss verwendet, so muss das startserv-Skript dieser Instanz als root ausgeführt werden. Normalerweise ist in der Konfiguration der Instanz mit run as user festgelegt, dass die Instanz, nachdem sie vom root-Benutzer gestartet wurde, vom angegebenen Benutzer weiter ausgeführt wird.
Lösung: Ergreifen Sie in Abhängigkeit von Ihrer Umgebung eine der nachfolgenden Maßnahmen.
Wenn es in Ihrer Umgebung nicht erforderlich ist, dass alle Anwendungs- und Administrationsserverinstanzen als root gestartet werden, dann kommentieren Sie die Ausführung der Befehle asadmin start-appserv und asadmin stop-appserv im Skript /etc/init.d/appserv aus.
Falls entweder bestimmte Verwaltungsdomains oder bestimmte Instanzen innerhalb einer oder mehrerer Verwaltungsdomains gestartet werden müssen, können Sie ein Skript zur Automatisierung dieses Vorgangs erstellen oder bearbeiten. Beachten Sie, dass zu ‟bestimmten Verwaltungsdomains” sowohl die Administrationsserverinstanz als auch sämtliche Anwendungsserverinstanzen jeder Domain gehören.
Nehmen Sie einen der folgenden Schritte vor.
Geben Sie im Skript /etc/init.d/appserv die zu startenden Domains oder Instanzen an.
Definieren Sie neue /etc/rc*.d/-Skripten im Einklang mit den Bedürfnissen Ihrer Umgebung.
Überlegungen: Beachten Sie bitte die nachstehenden Punkte, wenn Sie in den Startskripten des Betriebssystems Solaris den automatischen Start von bestimmten Anwendungsserver-Verwaltungsdomains oder Anwendungsserverinstanzen definieren möchten.
Starten bestimmter Domains – Wenn die Administrationsserverinstanz sowie alle Anwendungsserverinstanzen einer bestimmten Verwaltungsdomain als root-Benutzer gestartet werden sollen, so ändern Sie die /etc/rc*.d/-Skripten wie folgt:
case "$1" in 'start') /usr/sbin/asadmin start-domain --domain production-domain ;; 'stop') /usr/sbin/asadmin stop-domain --domain production-domain ;;
Starten bestimmter Anwendungsserverinstanzen als Nicht-root-Benutzer – Legen Sie in den /etc/rc*.d/-Skripten die Ausführung des Befehls su mit der Option -c fest.
case "$1" in 'start') su - usera -c "/usr/sbin/asadmin start-instance --domain test-domain instance-a" su - userb -c "/usr/sbin/asadmin start-instance --domain test-domain instance-b" ;; 'stop') su - usera -c "/usr/sbin/asadmin stop-instance --domain test-domain instance-a" su - userb -c "/usr/sbin/asadmin stop-instance --domain test-domain instance-b" ;;
Im Dokument Sun ONE Application Server 7 Administrator's Guide finden Sie weitere Informationen zu den Befehlen startup und shutdown, die über die Befehlszeilenschnittstelle asadmin verfügbar sind.