Nach der Installation der Solaris-Software wird das System neu gebootet. Vor dem Abschluss des Boot-Vorgangs fordert das System zur Eingabe des Root-Passworts auf. Der Boot-Vorgang kann erst abgeschlossen werden, wenn ein Passwort eingegeben wird.
Ein Finish-Skript mit dem Namen set_root_pw ist im Verzeichnis auto_install_sample gespeichert. Dieses Finish-Skript zeigt, wie das Root-Passwort automatisch, ohne Eingabeaufforderung definiert werden kann. set_root_pw sehen Sie in Beispiel 27–5.
Wenn Sie das Root-Passwort eines Systems mit einem Finish-Skript definieren, könnten Benutzer versuchen, das Root-Passwort anhand des verschlüsselten Passworts in dem Finish-Skript zu ermitteln. Sichern Sie das System gegen Versuche ab, das Root-Passwort auf diese Weise zu ermitteln.
#!/bin/sh
#
# @(#)set_root_pw 1.4 93/12/23 SMI
#
# This is an example Bourne shell script to be run after installation.
# It sets the system's root password to the entry defined in PASSWD.
# The encrypted password is obtained from an existing root password entry
# in /etc/shadow from an installed machine.
echo "setting password for root"
# set the root password
PASSWD=dKO5IBkSF42lw
#create a temporary input file
cp /a/etc/shadow /a/etc/shadow.orig
mv /a/etc/shadow /a/etc/shadow.orig
nawk -F: '{
if ( $1 == "root" )
printf"%s:%s:%s:%s:%s:%s:%s:%s:%s\n",$1,passwd,$3,$4,$5,$6,$7,$8,$9
else
printf"%s:%s:%s:%s:%s:%s:%s:%s:%s\n",$1,$2,$3,$4,$5,$6,$7,$8,$9
}' passwd="$PASSWD" /a/etc/shadow.orig > /a/etc/shadow
#remove the temporary file
rm -f /a/etc/shadow.orig
# set the flag so sysidroot won't prompt for the root password
sed -e 's/0 # root/1 # root/' ${SI_SYS_STATE} > /tmp/state.$$
mv /tmp/state.$$ ${SI_SYS_STATE}
|
Nachfolgend werden einige Befehle dieses Beispiels erläutert.
Der folgende Befehl setzt die Variable PASSWD auf ein verschlüsseltes Root-Passwort, das aus einem vorhandenen Eintrag in der Datei /etc/shadow eines Systems abgerufen wird.
#create a temporary input file |
Der folgende Befehl erzeugt aus /a/etc/shadow eine temporäre Eingabedatei.
cp /a/etc/shadow /a/etc/shadow.orig |
Der folgende Befehle modifiziert den Root-Eintrag in der Datei /etc/shadow für das neu installierte System unter Verwendung von $PASSWD als Passwortfeld.
if ( $1 == "root" ) |
Der folgende Befehl entfernt die temporäre Datei /a/etc/shadow.
rm -f /a/etc/shadow.orig |
Der folgende Befehl ändert den Eintrag in der state-Datei von 0 in 1 ab, so dass der Benutzer nicht zur Eingabe des Root-Passworts aufgefordert wird. Der Zugriff auf die state-Datei erfolgt über die Variable SI_SYS_STATE, die zurzeit den Wert /a/etc/.sysIDtool.state aufweist. Damit in den Skripten keine Probleme auftreten, wenn sich dieser Wert ändert, referenzieren Sie diese Datei immer mithilfe von $SI_SYS_STATE. Der hier gezeigte sed-Befehl enthält nach dem Zeichen 0 und nach dem Zeichen 1 ein Tabulatorzeichen.
sed -e 's/0 # root/1 # root/' ${SI_SYS_STATE} > /tmp/state.$$
|