Al termine del processo di installazione di Solaris, il sistema si riavvia. Prima che il processo di boot sia completato, il sistema richiede la password di root. La procedura di boot non prosegue finché la password non viene inserita.
Nella directory auto_install_sample viene salvato uno script finale di nome set_root_pw. Questo script mostra come impostare la password di root automaticamente, senza che il sistema la richieda. Lo script set_root_pw è riportato nell'Esempio 4–6.
Se si imposta la password di root del sistema con uno script finale, c'è il rischio che gli utenti cerchino di scoprirla accedendo alla password cifrata inclusa nello script finale. Occorre perciò adottare le misure di sicurezza appropriate per proteggere lo script.
#!/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} |
A seguire sono descritti alcuni comandi dell'esempio.
Il comando seguente imposta la variabile PASSWD su una password di root cifrata ricavata da una voce esistente nel file /etc/shadow del sistema.
#create a temporary input file |
Il comando seguente crea un file di input temporaneo di /a/etc/shadow.
cp /a/etc/shadow /a/etc/shadow.orig |
Il comando seguente cambia la password di root nel file /etc/shadow per il sistema installato usando $PASSWD come campo per la password.
if ( $1 == "root" ) |
Il comando seguente rimuove il file di input temporaneo di /a/etc/shadow.
rm -f /a/etc/shadow.orig |
Il comando seguente cambia l'istruzione da 0 a 1 nel file di stato, in modo che la password di root non venga richiesta all'utente. L'accesso al file di stato avviene tramite la variabile SI_SYS_STATE, il cui valore corrente è /a/etc/.sysIDtool.state. Per evitare problemi con lo script in caso di cambiamento di questo valore, fare sempre riferimento a questo file usando $SI_SYS_STATE. Il comando sed di questo esempio contiene un carattere di tabulazione dopo lo 0 e dopo l'1.
sed -e 's/0 # root/1 # root/' ${SI_SYS_STATE} > /tmp/state.$$ |