Wenn Sun ONE Application Server als Bestandteil einer Solaris-Installation installiert wurde, sind mit dem Start von Application Server verschiedene Probleme verbunden:
Alle Anwendungsserver- und administrative Server-Instanzen werden beim Solaris-Systemstart automatisch gestartet. In vielen Umgebungen sollen aber nicht alle Instanzen automatisch mit Solaris gestartet werden, denn dies kann den Arbeitsspeicher des Systems mitunter stark belasten.
Beim automatischen Start der Anwendungsserver- und administrativen Server-Instanzen werden die Startup-Skripten der einzelnen Instanzen als root ausgeführt. Durch die Ausführung der nicht im Besitz von root befindlichen Startup-Skripten für Instanzen haben Nicht-root-Benutzer die Möglichkeit, auf Instanzebene die Startup-Skripten zu bearbeiten und sich Zugang zu root zu beschaffen.
Bei der Installation von Sun ONE Application Server werden das Skript /etc/init.d/appserv und symbolische Links zu den Skripten S84appserv und K05appserv in den /etc/rc*.d/-Verzeichnissen installiert. Diese Skripten bewirken, dass alle als Bestandteil der Anwendungsserver-Installation definierten Anwendungsserver- und administrativen Server-Instanzen mit dem Starten und Beenden des Solaris-Systems automatisch ebenfalls gestartet bzw. beendet werden.
Das Skript /etc/init.d/appserv enthält den folgenden Code-Abschnitt:
case "$1" in 'start') /usr/sbin/asadmin start-appserv ;; 'stop') /usr/sbin/asadmin stop-appserv ;;
Durch die Ausführung des Befehls asadmin start-appserv werden alle definierten administrativen und Anwendungsserver-Instanzen aller Verwaltungsdomänen beim Solaris-Systemstart ebenfalls gestartet. Da die Startup- und Shutdown-Skripten des Systems als root ausgeführt werden, werden auch die Startup-Skripten der einzelnen Anwendungsserver- und administrativen Server-Instanzen als root ausgeführt. Das Startup-Skript für die Instanzebene heißt startserv und befindet sich in instance-dir/bin/startserv. Weil der Eigentümer einer Instanz nicht unbedingt root sein muss, könnte dieser Nicht-root-Benutzer das startserv-Skript dahingehend bearbeiten, dass er/sie Befehle als root ausführen kann.
Das startserv-Skript von Instanzen, die einen privilegierten Netzwerkanschluss verwenden, muss als root ausgeführt werden. In der Instanzenkonfiguration ist jedoch in der Regel die Ausführungsart run as user eingestellt. Dies soll gewährleisten, dass die Instanz nach dem Start unter root unter der Identität des angegebenen Benutzers ausgeführt wird.
Abhilfemaßnahme: Wenden Sie in Abhängigkeit von Ihrer Umgebung eine der nachfolgenden Lösungen an:
Wenn in Ihrer Umgebung nicht alle Anwendungsserver- und administrativen Server-Instanzen als root gestartet werden müssen, kommentieren Sie die Ausführung der Befehle asadmin start-appserv und asadmin stop-appserv im Skript /etc/init.d/appserv aus.
Wenn in Ihrer Umgebung entweder bestimmte Verwaltungsdomänen oder bestimmte Instanzen innerhalb einer oder mehrerer Verwaltungsdomänen gestartet werden müssen, können Sie ein Skript für die Automatisierung dieses Vorgangs schreiben. Beachten Sie bitte, dass bestimmte Verwaltungsdomänen die administrative Server-Instanz sowie alle Anwendungsserver-Instanzen jeder Domäne einschließt.
Führen Sie einen der folgenden Schritte durch:
Ändern Sie das Skript /etc/init.d/appserv so, dass die gewünschten Domänen oder Instanzen gestartet werden.
Definieren Sie neue /etc/rc*.d/-Skripten im Einklang mit den Bedürfnissen in Ihrer Umgebung.
Überlegungen zu Startup-Skripten: Wenn Sie die Startup-Skripten der Solaris-Software bearbeiten, um entweder bestimmte Verwaltungsdomänen oder bestimmte Anwendungsserver-Instanzen automatisch zu starten, beachten Sie bitte die nachfolgenden Aspekte:
Starten einer bestimmten Domäne – Zum Starten der administrativen Server-Instanz und aller Anwendungsserver-Instanzen einer bestimmten Verwaltungsdomäne als root-Benutzer ä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 einer bestimmten Anwendugnsserver-Instanz als Nicht-root-Benutzer – Geben Sie in den /etc/rc*.d/-Skripten an, dass der Befehl su mit der Option -c ausgeführt wird.
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" ;;
Weitere Informationen zu den über die Befehlszeilenschnittstelle asadmin verfügbaren Befehlen startup und shutdown finden Sie in Sun ONE Application Server 7 Administrator's Guide.