为了限制某些公共用户的访问,在用户登录后提示一个问题,只允许回答正确的用户登录。密码问题和答案可以从外部页面或者数据库中读取,下面例子中使用固定的问题和答案。
#!/bin/sh
trap 'logout;' 1 SIGINT
read -p "Today's ticket number:" ticket
if [ "$ticket" != "32378" ]; then
echo "Wrong ticket number! Logoff."
exit
fi
当用户按Ctrl-C或者Ctrl-Z时,可以直接关闭程序,所以在程序开始,屏蔽了这两个信号,其中SIGINT表示Ctrl-C,也可以用2, INT表示。
另一种方法是替换Shell文件,指定给用户的shell程序必须记录在/etc/shells文件中。
#! /bin/sh
while [ -z $ticket ]; do
read -p "Today's ticket number:" ticket
done
if [ $ticket == '12345' ]; then
/bin/bash
else
echo "Wrong ticket number! Logoff."
exit
fi
Comments
There are currently no comments
New Comment