Linux下实现限制用户的登陆地点
2024-08-28 00:15:37
供稿:网友
 
用户在登录时, 验证完passwd后, 根据shell的不同, 系统首先执行/etc下的某个文件. sh,ksh是profile, csh是csh.cshrc, bash是bashrc. 在这时对用户登陆地点加以验证, 可防止某些可能的intruder. 下面是我用在西门子RM600并行机上的/etc/profile的一段程序。 
.... 
.... 
# check for authenication 
if [ -r /etc/checkfrom.awk ]; then 
VALID=`finger | awk -f /etc/checkfrom.awk` 
if [ "$VALID" != "WELCOME" ]; then 
echo "Intruder, GET AWAY FROM HERE!!!" 
exit 
fi 
fi 
..... 
...... 
/etc/checkfrom.awk是一个awk程序, 内容如下: 
BEGIN {site["aft01"]=1; 
site["aft02"]=1; 
site["aft03"]=1; 
site["aft04"]=1; 
site["aft05"]=1; 
site["rs6000"]=1; 
} 
$1==ENVIRON["LOGNAME"] { 
if ($NF !~ /[0-9]+:[0-9]+/){ 
i = NF - 3 
if("/dev/"$i == ENVIRON["TTY"]){ 
if(ENVIRON["TTY"] != "/dev/console"){ 
if($NF in site)print "WELCOME" 
else print "GETAWAY" 
} 
else print "WELCOME" 
exit 0 
} 
} 
else{ 
i = NF - 2 
if("/dev/"$i == ENVIRON["TTY"]){ 
print "WELCOME" 
exit 0 
} 
} 
} 
注: 请注意你的机器上的finger显示的格式, 我机器上的格式如下: 
$ finger 
lsad% finger 
Login Name TTY Idle When Where 
tiger Wang Shuhu console Mon 00:41 
lsad% 
上面的awk程序是针对这种格式编写的, 仅供参考。