18.3.21. Простой сценарий, обеспечивающий безопасность при регистрации
18.3.21. Простой сценарий, обеспечивающий безопасность при регистрации
А теперь рассмотрим структурное дополнение, которое усиливает меры безопасности при регистрации пользователя перед запуском приложений. Поступает приглашение на ввод имени пользователя и пароля; если имя пользователя и пароль
совпадают со строками, включенными в сценарий, пользователь регистрируется. Если
такого совпадения не наблюдается, пользователь завершает работу.
Сценарий устроен так, что вначале переменные получают значение "ложь". Предполагается, что вводные данные пользователя окажутся ошибочными. Текущие установки команды stty сохраняются, поэтому можно скрыть символы, которые вводятся в поле пароля. Затем установки stty восстанавливаются.
Если вводится корректный ID пользователя и пароль (паролем является mayday), переменные invalid_user и invalid_passwd для недействительного пользователя или пароля имеют значение "по". Затем производится тестирование, и если какая?либо из переменных принимает значение yes, сценарий для этого пользователя завершается по умолчанию.
К работе допускаются пользователи с действительными ID и паролями. В регистрационном сценарии удобно применять описанное структурное дополнение. В данном примере действительными ID пользователя служат dave или pauline.
$ pg ifpass
#!/bin/sh
#ifpass
#установим значения переменных в "ложь" INVALID_USER=yes
INVALID_PASSWD=yes
# сохранение текущих установок команды stty
SAVEDSTTY=`stty -g`
echo "You are logging into a sensitive area"
echo -n "Enter your ID name :"
read NAME
# скройте символы, введенные в терминале
stty -echo
echo "Enter your password :"
read PASSWORD
# попробуем снова
stty $SAVEDSTTY
if [ "$NAME"="dave" ] || [ "$NAME"="pauline" ]; then
# если действительно, установите переменную
INVALID_USER=no
fi
if [ "$PASSWORD"="mayday" ]; then
# если пароль действителен, установите переменную
INVALID_PASSWD=no
fi
if [ "$INVALIDUSER"="yes" -o "$INVALID_PASSWD"="yes" ]; then
echo " `basename $0 :` Sorry wrong password or userid"
exit 1
fi
# если вы здесь, ваш ID и пароль в порядке.
echo "correct user id and password given"
Если при выполнении приведенного сценария указывается недействительный пароль, получим:
$ ifpass
You are logging into a sensitive area
Enter your ID name : dave
Enter your password :
ifpass :Sorry wrong password or userid
Введем верное имя регистрационное имя и пароль.
$ ifpass
You are logging into a sensitive area
Enter your ID name : dave
Enter your password :
correct user id and password given