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 # # Esempio di script della shell Bourne da eseguire dopo l'installazione. # Imposta la password di root sul valore definito in PASSWD. # La password cifrata è derivata da una password di root esistente # in /etc/shadow su un sistema installato. echo "impostazione della password per root" # imposta la password di root PASSWD=dKO5IBkSF42lw # crea un file di input temporaneo 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 # rimuove il file temporaneo rm -f /a/etc/shadow.orig # imposta il flag, sysidroot non richiederà la password di root 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.
# crea un file di input temporaneo |
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.$$ |