用户登录前添加验证界面

  | 转载时请务必以超链接形式标明文章原文链接和作者信息及本版权声明。
原文链接:http://www.liaojl.com/archives/2008/05/login-auth.html

为了限制某些公共用户的访问,在用户登录后提示一个问题,只允许回答正确的用户登录。密码问题和答案可以从外部页面或者数据库中读取,下面例子中使用固定的问题和答案。

#!/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

Leave a comment

Archives

Creative Commons License
This blog is licensed under a Creative Commons License.