Chinaunix首页 | 论坛 | 博客
  • 博客访问: 514846
  • 博文数量: 484
  • 博客积分: 10145
  • 博客等级: 上将
  • 技术积分: 5805
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-27 18:34
文章分类

全部博文(484)

文章存档

2011年(52)

2010年(107)

2009年(287)

2008年(38)

我的朋友

分类: LINUX

2009-12-06 00:54:39

服务器我做主 踢出Linux系统中不听话的用户

 Linux是一个多用户的操作系统,在同一个时刻内可以有多个用户同时登陆到 Linux系统中,甚至同一个用户都可以多次同时进行登陆。但是有时候系统管理员也会发现一些不听话的用户。如这些用户可能在进行一些未经授权的访问或者 占用了太多的资源。此时系统管理员需要把他们剔除出系统。这该怎么做呢?

  如现在笔者有一台Linux的服务器,现在正有两个用户连接在操作系统上。(笔者现在是利用同一台电脑不同的帐户名进行登陆,故后者显示的IP地址是 相同的。)种种迹象表明,现在Oracle用户正在进行一些非法的勾当。为了安全考虑,笔者要马上把这个用户踢出Linux服务器,中断其与Linux服 务器之间的连接。笔者下面就一步步的跟对大家介绍,该如何实现这个目的。

  第一步:利用who命令,找出用户登录的终端代号。

  如果系统管理员要把某个用户踢出操作系统,首先需要了解这个用户是通过什么方式等到到这个操作系统的,即要掌握用户登录的终端代号。用户以不同的形式 登陆到Linux操作系统,其终端代号是不同的。TTY1-TTY6分别代表本机上的1到6号的虚拟主控台。PTS表示用户是通过远程登陆的。如果数字 为:0则表示用户从XWindow登录系统。如果系统管理员需要知道某个用户是通过什么方式登陆到Linux操作系统的,则可以通过who命令来查询。如 上面的示意图中,第二个字段就是用户登录操作系统的方式i。这里PTS表示oracle这个用户是通过远程登录的。如可能是通过ssh协议登陆到 Linux操作系统的。掌握这个信息是把用户踢出操作系统的关键。

  另外如果系统当前登陆的用户比较多,执行who命令列出所有数据会让系统管理员眼花缭乱。如果系统管理员知道要踢出操作系统的用户名,则可以使用 who 用户名的方式来显示某个特定用户的信息。如果系统管理员不知道用户的具体名字,而只是模糊的记得这个用户可能是o开头的,则还可以利用通配符来实现模糊查 询。另外如果只需要查询用户的终端代号信息,还可以在who命令后面加入具体的参数。

 如果系统管理员要关掉某个进程的话,则可以通过使用kill PID的方式来关闭shell进程。不过前提是系统管理员需要知道这个用户所采用shell的进程号。要知道这个信息的话,管理员可以采用ps aus | grep pts/0命令来查询。在返回的接过中,PID编号最小的值就是oracle 用户当前所采用的SHELL 的PID号。这里ps aux命令会列出系统中正在执行的所有程序。如果程序比较多的话,那么看起来就会眼花缭乱,难以一下子找到合适的值。故在这里还需要结合grep命令来使 用,可以事半功倍。grep pts/0 这两个参数就好像是一个过滤器,它会找出oracle用户(pts/0是第一步找出来的oracle用户的终端代号,它与系统登陆用户一一对应)当前所有 的运行程序,并且按PID号从小到大进行排序。而因为用户一登陆操作系统,其第一个开启的程序就是shell。故显示在最前面的就是oracle用户所采 用shell的pid号。系统管理员找到这个PID号之后,就可以利用kill命令来杀死shell进程了。

  第三步:利用kill命令把用户踢出Linux操作系统。

  以上两步都完成之后,就是万事俱别,只欠东风了。接下去,系统管理员就可以通过kill命令来把用户从系统中踢出去。不过这个踢也有好几种踢法,系统管理员可以先采取比较柔和的方法。如果柔和的方法不管用的话,则采用强制的措施。这么管理起来比较人性化一点。

  通常情况下,笔者建议先利用kill 命令加上要删除的shell程序的pid号。如果用户的所运行的其他进程不怎么顽固的话,通常可以正常关闭shell程序。这是一种相对温和的方式,它可 以把对用户oracle正在执行的运行的文件所造成的负面影响降低到最低。这个跟Windows操作系统注销的功能差不多。如过用户已经打开的文件还没有 保存的话,则系统会保存这些文件的副本等等。故下次这个用户重新登陆后,不会丢失大量的数据。

  不过同Windows系统一样,有时候注销个好半天都无法注销成功。所以kill命令有时候也无法顺利删除某些程序。此时管理员就需要采用其他的一些 手段,如在Kill命令中加入一些参数来关闭 shell进程。笔者建立当无法通过kill加PID进程号的方式关闭shell环境的话,那么就可以通过Kill -15的方式来关闭。这会强制删除shell 进程。这个就好像Windows系统下的重新启动命令一样。在遇到操作系统问题时,他比系统注销要强硬一点。但是他的破坏作用也比较大。故需要谨慎使用。 不过话说回来,如果真的要强制把某个用户踢出系统的话,此时通过以上两种方式来关闭用户的shell进程往往不起作用。否则说,很难再短时间内操作成功。

  故大部分情况下,系统管理员最好还是需要使用Kill-9命令来删除shell进程。如系统管理员可以使用kill -9 pid这个命令来强制关闭某个用户的 shell,从而终端用户与系统的连接。不过虽然说在大部分情况下系统管理员还是需要采用这个最后的强制措施,不过为了系统的稳定性考虑,笔者还是建议先 采用第一、二个比较柔和的方式看看。只有在以上两个方式都不管用的情况下,再采用Kill-9命令。而不要一下子就采用kill -9这个极端方式。
阅读(380) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~