Det finns flera problem som gäller starten av programservern om Sun ONE Application Server har installerats som en del av en Solaris-installation:
Alla instanser för program- och administrationsserver startas automatiskt under starten av Solaris. För många miljöer förväntas inte alla instanser starta automatiskt under starten av Solaris. Om alla definierade instanser startas kan det påverka systemets minneskapacitet.
När instanser för program- och administrationsserver startas automatiskt körs startskripten för varje instans med rootbehörighet. Detta kan ge icke-rootanvändare obehörig åtkomst till startskript som ägs av root.
Under installationen av Sun ONE Application Server installeras skriptet /etc/init.d/appserv och symboliska länkar till skripten S84appserv och K05appserv i /etc/rc*.d/-katalogerna. De här skripten orsakar att alla instanser för program- och administrationsserver startas som definierats som en del av programserverinstallationen startas och stoppas automatiskt när Solaris startas och stängs av.
Skriptet /etc/init.d/appserv innehåller följande kodavsnitt:
case "$1" in 'start') /usr/sbin/asadmin start-appserv ;; 'stop') /usr/sbin/asadmin stop-appserv ;;
Om du kör kommandot asadmin start-appserv startas alla instanser för program- och administrationsserver som definierats i alla administrativa domäner när Solaris startas. Eftersom start- och avstängningsskript körs som root, körs även startskripten för varje instans för program- och administrationsservern som root. Startskriptet på instansnivå heter startserv och finns i katalogen instance-dir/bin/startserv . Eftersom instanser kan ägas av andra användare än root kan startserv-skriptet ändras av icke-rootanvändare så att det körs som root.
Om en instans använder en privilegierad nätverksport måste instansens startserv-skript köras som root. Oftast har run as user angetts i konfigurationen för instansen för att tvinga den att köras som den användare som angetts efter att instansen först har startas av rootanvändaren.
Åtgärd: Utför en av följande lösningar, beroende på operativmiljö:
Om inte alla instanser för program- och administrationsserver måste startas som root, kommenterar du bort kommandona asadmin start-appserv och asadmin stop-appserv i skriptet /etc/init.d/appserv.
Om du måste starta antingen vissa administrativa domäner eller instanser inom en eller flera adminstrativa domäner kan du ändra eller skapa ett skript som automatiserar processen. Observera att “specifika administrativa domäner” innefattar instansen för den administrativa servern och alla instanser för programservern för varje domän.
Ändra skriptet /etc/init.d/appserv så att det startar domäner eller intressanta instanser.
Definiera nya /etc/rc*.d/-skript efter de behov som gäller för den operativmiljö som du använder.
Att tänka på när det gäller systemstart:När du ändrar startskripten för Solaris så att vissa domäner eller instanser startas automatiskt, bör du tänka på det här:
Starta en specifik domän – Om du vill starta instansen för administrationsservern och alla instanser för programservern för en viss domän som rootanvändare, ändrar du skriptet /etc/rc*.d/ så här:
case "$1" in 'start') /usr/sbin/asadmin start-domain --domain production-domain ;; 'stop') /usr/sbin/asadmin stop-domain --domain production-domain ;;
Starta en specifik programserverinstans som icke-rootanvändare – Ändra skriptet /etc/rc*.d/ så att det använder kommandot su med - c-alternativet.
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" ;;
Mer information om kommandona startup och shutdown som är tillgängliga via kommandoradsgränssnittet asadmin finns i Sun ONE Application Server 7 Administrator's Guide.