[这个贴子最后由shirley在 2002/02/26 02:33pm 编辑]
问题解决了。1。限制所有用户的远程登录 在/etc/profile文件中适当的位置写下这段语句: ttyno=`tty` # 获得用户登录的tty信息 if [ $ttyno != "/dev/console" ]; then # 判断是否从控制台登录 echo "You cannot login remotely" ttyno=`echo $ttyno | cut -c6-20 ` # 获得终端的识别符 如 pts/? pid=`ps -t $ttyno|grep -v ps|tail -1|awk '{print $1}'` # 获得该终端进程号 kill -9 $pid # 杀掉该进程 exit 1 fi 说明: 先判断用户是不是通过CONSOLE登录上来的,如果是则允许登录,否则找到该终端的进程号,使用kill命令断掉终端连接。 当然,通过将/etc/inetd.conf文件中的telnet行注释掉可以屏蔽远程用户的telnet服务,但是无法管理ssh.使用这段脚本就都管了。 2. 禁止指定用户的远程登录 思路:在/etc目录下创建一个login-user文件,该文件的每一行是一个允许远程登录的用户的帐号。为了安全,建议将该文件设为0600属性。然后在/etc/profile文件中写下如下脚本: ttyno=`tty|cut -c6-20` # 获得该登录的终端信息,如 pts/? user=`/usr/ucb/whoami` # 获得用户的帐号 grep -w $user /etc/login-user # 检查/etc/login-user文件中是否有该用户 if [ $? -ne 0 ]; then # 如果没有该用户,则拒绝该用户的登录 echo "You have not the privilege to login remotely" pid=`ps -t $ttyno|grep -v ps|tail -1|awk '{print $1}'` kill -9 $pid exit 1 fi 这段代码尚未测试,有问题欢迎讨论。 |