När Solaris-programvaran har installerats på ett system så startas systemet om. Innan startprocessen har körts färdigt uppmanas användaren att ange rotlösenordet. Systemet kan inte avsluta startprocessen förrän någon anger ett lösenord.
Ett slutskript med namnet set_root_pw ligger i katalogen auto_install_sample. Slutskriptet visar hur du ställer in rotlösenordet automatiskt. set_root_pw visas i Exempel 7–6.
Om du ställer in systemets rotlösenord med ett slutskript kan användare försöka ta reda på rotlösenordet via det krypterade lösenordet i ditt slutskript. Se till att du är skyddad mot användare som kan tänkas försöka ta reda på rotlösenordet.
#!/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} |
Följande är beskrivningar av några kommandon för det här exemplet.
Följande kommando ställer in variabeln PASSWD till ett krypterat rotlösenord, som hämtas från en befintlig post i ett systems /etc/shadow-fil.
#skapa en temporär indatafil |
Följande kommando skapar en temporär indatafil av /a/etc/shadow.
cp /a/etc/shadow /a/etc/shadow.orig |
Följande kommando ändrar rotposten i filen /etc/shadow för det nyinstallerade systemet med $PASSWD som lösenordsfält.
if ( $1 == "root" ) |
Följande kommando tar bort den temporära /a/etc/shadow-filen.
rm -f /a/etc/shadow.orig |
Följande kommando ändrar posten från 0 till 1 så att användaren inte behöver ange rotlösenordet. Statusfilen går att komma åt via variabeln SI_SYS_STATE, som för närvarande har värdet /a/etc/.sysIDtool.state. Hänvisa alltid till den här filen med hjälp av $SI_SYS_STATE, om du vill undvika problem med dina skript om värdet skulle råka ändras. Kommandot sed som visas här innehåller ett tabbtecken efter 0 och efter 1.
sed -e 's/0 # root/1 # root/' ${SI_SYS_STATE} > /tmp/state.$$ |