众所周知,bash是一款极其强大的shell,提供了强大的交互与编程功能。这样的一款shell中自然不会缺少“函数”这个元素来帮助程序进行模块化的高效开发与管理。于是产生了由于其特殊的特性,bash拥有了fork炸弹。
所谓fork炸弹是一种恶意程序,它的内部是一个不断在fork进程的无限循环,fork炸弹并不需要有特别的权限即可对系统造成破坏。现在来看一个最简单的fork炸弹:
一行看似无法理解的只有13个字符的命令,即可占用掉所有系统的资源。其实,这行命令如果这样写成bash script就不难理解了:
冒号":"其实是函数名,这个bash脚本就是在不断的执行该函数,然后不断fork出新的进程。那么,有没有办法扼制这种情况的发生呢?答案是肯定的,只需设置进程的limit数即可:
使用工具ulimit即可设置各种限制数,具体的请参考该工具的manual page。在这里笔者限制了max user processes数为200,所以,可以安全地执行这个fork炸弹了:
txi@ghosTunix.org:~> date
Tue Nov 25 14:11:51 CST 2008
txi@ghosTunix.org:~> date
Mon Jul 28 17:33:30 CST 2008
txi@ghosTunix.org:~> date
Tue Jul 29 21:55:50 CST 2008
shred是GNU fileutils中的一员,它的功能简单的说就是涂鸦,把一个文件用随机的编码篡改的一塌糊涂。其宗旨就是更安全地帮助删除一个机密文件:
可见,shred可以将一个文件的内容改的面目全非。
txi@ghosTunix.org:~> date
Fri Aug 15 08:38:17 CST 2008
last命令通过查看(或者说搜索)/var/log/wtmp文件或者使用命令选项-f指定的自定义文件来列出自从该记录文件建立起系统上所有用户登录登出的信息,该工具能够很好的帮助管理员来监视系统的登录情况。
在last给出的信息中,包含了用户名、登录终端、登录登出时间等多项重要信息,下面就举出常见的使用方法,具体的参考man:
lastb工具与last相同,但是它需要root权限才能执行,来显示所有可能是恶意的登录事件
txi@ghosTunix.org:~> date
Sat Aug 30 19:16:32 CST 2008
Host by is-Programmer.com | Power by Chito 1.3.3 beta