Solaris 소프트웨어가 시스템에 설치된 후 시스템이 재부트됩니다. 부트 프로세스가 끝나기 전에 시스템은 루트 비밀번호 입력을 요청합니다. 비밀번호를 입력하기 전에는 시스템은 부트를 마칠 수 없습니다.
set_root_pw라는 이름의 종료 스크립트는 auto_install_sample 디렉토리에 저장됩니다. 종료 스크립트는 루트 비밀번호 입력 요청을 받지 않고 자동으로 설정하는 방법을 보여 줍니다. set_root_pw는 예 7–6에 나와 있습니다.
종료 스크립트를 사용하여 시스템의 루트 비밀번호를 설정한 경우 사용자가 종료 스크립트에 있는 암호화된 비밀번호에서 루트 비밀번호를 알아내려 할 수 있습니다. 루트 비밀번호를 파악하려고 시도하는 사용자에 대비한 보호 조치를 취해야 합니다.
#!/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} |
다음은 이 예의 일부 명령에 대해 설명합니다.
다음 명령은 변수 PASSWD를 시스템의 /etc/shadow 파일에 있는 기존 항목에서 얻은 암호화된 루트 비밀번호로 설정합니다.
#create a temporary input file |
다음 명령은 /a/etc/shadow의 임시 입력 파일을 만듭니다.
cp /a/etc/shadow /a/etc/shadow.orig |
다음 명령은 $PASSWD를 암호 필드로 사용하여 새로 설치된 시스템의 /etc/shadow 파일에서 루트 항목을 변경합니다.
if ( $1 == "root" ) |
다음 명령은 임시 /a/etc/shadow 파일을 제거합니다.
rm -f /a/etc/shadow.orig |
다음 명령은 상태 파일의 항목을 0에서 1로 변경하여 사용자에게 루트 비밀번호 입력 요청을 하지 않도록 합니다. 상태 파일은 현재 값이 /a/etc/.sysIDtool.state인 변수 SI_SYS_STATE를 사용하여 액세스합니다. 스크립트 문제를 방지하려면 값이 변경되는 경우 항상 $SI_SYS_STATE를 사용하여 이 파일을 참조하십시오. 여기에 보이는 sed 명령은 0 뒤와 1 뒤에 탭 문자가 포함되어 있습니다.
sed -e 's/0 # root/1 # root/' ${SI_SYS_STATE} > /tmp/state.$$ |