操作系统

通过配置来限制普通用户能使用的最大系统资源
作者 thestones 2005年08月22日 07:10

    “僵尸”进程是一个早已死亡的进程,但在进程表(processs table)中仍占了一个位置(slot)。由于进程表的容量是有限的,所以,defunct进程不仅占用系统的内存资源,影响系统的性能,而且如果其数目太多,还会导致系统瘫痪。

    子进程是由父进程创造出来的,那么如果一个父程序执行完退出后,子进程不管是不是僵尸进程也直接就退出了,因为父进程死了嘛。那么这也不会造成多大危害啊?如果大家这么认为那可就错了,当我们刚才用ps命令观察进程的执行状态时,看到某些进程的状态栏为defunct,这就是所谓的“僵尸”进程。“僵尸”进程是一个早已死亡的进程,但在进程表(processs table)中仍占了一个位置(slot)。由于进程表的容量是有限的,所以,defunct进程不仅占用系统的内存资源,影响系统的性能,而且如果其数目太多,还会导致系统瘫痪,具体请看下面的代码:

    /***********************************无限创建子进程********************************************/

    #include

    #include

    main()

    {

     for (;;) /*制作一个死循环*/

    

     fork(); /*开始创建一个子进程*/

    }

    /********************************************************************************************/

    懂C语言的朋友会知道for(;;)是一个死循环。那么这仅有2行代码的程序就可以把你的linux瞬间死机,因为他的作用是无限制的在内存里增加新的子进程,一个系统根据内存的容量会分配进程的最大限制,一旦同时运行的进程数超符合,那么你的机器必然会死机。

     我这里分别用了2个用户进行测试过,一个是普通权限的用户,一个是Root用户,测试结果是“任何用户只要执行这个程序都会让机器死掉”。原因就是默认的Linux系统没有对普通用户的使用最大进程进行限制。所以这样对系统造成很大一个威胁,那么我们如何避免普通用户非法执行过多资源或进程导致系统拖死,所以我们的给除了Root的用户做一下限制。

    对普通用户进行限制:

    第1步:首先进到Linux终端用vi编辑/etc/security /limits.conf文件,在里面加入:

      * hard core 0

      * hard rss 5000

      * hard nproc 20

    

     这里的* 代表除了Root的所有用户,(* hard core 0) 是禁止core files“core 0”,(* hard rss 5000) 是限制内存使用为5MB“rss 5000”, (* hard nproc 20 )是限制进程数为“nproc 50“。大家可以根据自己系统内存大小进行合理配置。

    第2步:用vi编辑/etc/pam.d/login文件,然后加上下面这行保存退出就可以。

      session required /lib/security/pam_limits.so

     好了,现在我们已经对普通用户限制了进程和内存使用极限,修改完配置以后大家可以用Root和普通用户分别进行测试,结果当然是普通用户执行完我们刚才做的程序不会死机了。

     一个系统的安全性不取决与打不打补丁,虽然打补丁很重要,但是对系统做出相应的配置也是相当重要的。

    

    

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/9483/showart_43995.html

打开APP阅读全文

通过配置来限制普通用户能使用的最大系统资源

通过配置来限制普通用户能使用的最大系统资源

长按识别二维码 进入IT168查看全文

请长按保存图片
{{data.thematic.text}}

相关文章

加载中...

分享到

请使用浏览器的分享功能
分享到微信等