• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            旅途

            如果想飛得高,就該把地平線忘掉

            Linux安全攻略—僵尸進程


            ??? 好了,我現(xiàn)在讓大家就看看我們神秘僵尸進程是什么樣子的?下面我來用c寫出父進程建立子進程的代碼:
            /**********************************子進程正常出生和滅亡過程****************************************/
            #include <sys/types.h>
            #include <unistd.h>
            main()
            {
            ???
            ??? fork(); /*開始創(chuàng)建一個子進程*/

            ??? if(fork()>0) /* 如果是父進程 */

            ?????? wait(NULL);??? /* 收集僵尸進程 */
            }

            ??? 大家看完代碼后,就會覺得這個代碼正是我剛才講的進程一生是怎么樣的,進程死后,一定要為他收尸,否則他就會編程僵尸進程。下面就讓我們來看看未能把死去的進程收尸會變成什么樣子?

            /**********************************僵尸進程******zombie.c*****************************************************/

            #include <sys/types.h>
            #include <unistd.h>
            main()
            {

            ?????? fork(); /*開始創(chuàng)建一個子進程*/

            ??? if(fork>0) /* 如果是父進程 */

            ?????? sleep(30);??? /* 休眠30秒,這段時間里,父進程什么也干不了 */
            ?????? wait(NULL);??? /* 收起僵尸進程 */

            ?? /*因為父進程死了,子進程也得一起陪葬,那么我們就讓父進程睡眠30秒,在這30秒內(nèi)我們就可以看到僵尸進程。
            ???? 30秒過后,父進程醒來后就得死,所以到那時子進程也就死去。*/
            }


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

            ??? 為了讓大家更清楚的看到僵尸進程我們把這個僵尸進程代碼編譯,然后執(zhí)行,
            #gcc -o zombie zombie.c

            編譯成功后我們開始執(zhí)行這個程序因為代碼里的sleep(30)是讓父進程睡眠30秒,如果我們在前臺執(zhí)行我們這個程序,那么就不能執(zhí)行其他shell命令了,所以這里我們在執(zhí)行的命令后面加一個& 代表后臺運行的意思。
            #./zomber &

            好了,我們在30秒內(nèi)執(zhí)行查看進程命令來看看我們這個zombie進程是什么樣的?
            #ps -aux |grep zombie

            這個命令是顯示有關(guān)zombie的所有信息。具體操作請看圖(2)。

            ??? 看到這里后,聰明的朋友會問,既然子進程是由父進程創(chuàng)造出來的,那么如果一個父程序執(zhí)行完退出后,子進程不管是不是僵尸進程也直接就退出了,因為父進程死 了嘛。那么這也不會造成多大危害啊?如果大家這么認為那可就錯了,當我們剛才用ps命令觀察進程的執(zhí)行狀態(tài)時,看到某些進程的狀態(tài)欄為defunct,這 就是所謂的“僵尸”進程。“僵尸”進程是一個早已死亡的進程,但在進程表(processs table)中仍占了一個位置(slot)。由于進程表的容量是有限的,所以,defunct進程不僅占用系統(tǒng)的內(nèi)存資源,影響系統(tǒng)的性能,而且如果其數(shù) 目太多,還會導(dǎo)致系統(tǒng)癱瘓,具體請看下面的代碼:
            /***********************************無限創(chuàng)建子進程********************************************/

            #include <sys/types.h>
            #include <unistd.h>
            main()
            {
            ?????? for (;;)? /*制作一個死循環(huán)*/
            ??????
            ???????? fork(); /*開始創(chuàng)建一個子進程*/

            }


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

            懂C語言的朋友會知道for(;;)是一個死循環(huán)。那么這僅有2行代碼的程序就可以把你的linux瞬間死機,因為他的作用是無限制的在內(nèi)存里增加新的子進程,一個系統(tǒng)根據(jù)內(nèi)存的容量會分配進程的最大限制,一旦同時運行的進程數(shù)超符合,那么你的機器必然會死機。
            ?? 我這里分別用了2個用戶進行測試過,一個是普通權(quán)限的用戶,一個是Root用戶,測試結(jié)果是“任何用戶只要執(zhí)行這個程序都會讓機器死掉”。原因就是默認的 Linux系統(tǒng)沒有對普通用戶的使用最大進程進行限制。所以這樣對系統(tǒng)造成很大一個威脅,那么我們?nèi)绾伪苊馄胀ㄓ脩舴欠▓?zhí)行過多資源或進程導(dǎo)致系統(tǒng)拖死, 所以我們的給除了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) 是限制內(nèi)存使用為5MB“rss? 5000”, (* hard nproc 20 )是限制進程數(shù)為“nproc 50“。大家可以根據(jù)自己系統(tǒng)內(nèi)存大小進行合理配置。

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

              session required /lib/security/pam_limits.so

            ??? 好了,現(xiàn)在我們已經(jīng)對普通用戶限制了進程和內(nèi)存使用極限,修改完配置以后大家可以用Root和普通用戶分別進行測試,結(jié)果當然是普通用戶執(zhí)行完我們剛才做的程序不會死機了。

            ??? 一個系統(tǒng)的安全性不取決與打不打補丁,雖然打補丁很重要,但是對系統(tǒng)做出相應(yīng)的配置也是相當重要的。

             

            posted on 2007-08-01 00:07 旅途 閱讀(378) 評論(0)  編輯 收藏 引用 所屬分類: Linux開發(fā)

            久久婷婷五月综合97色直播| 久久精品国产亚洲77777| 欧美亚洲另类久久综合婷婷| 亚洲精品国产自在久久| 久久精品人人槡人妻人人玩AV| 2020最新久久久视精品爱| 久久久亚洲AV波多野结衣 | 99精品久久精品一区二区| 久久精品国产精品青草app| 亚洲精品无码久久毛片| 国内精品久久久久影院免费| 欧美精品国产综合久久| 91久久成人免费| 精品久久无码中文字幕| 久久综合五月丁香久久激情| 狠狠色丁香久久综合五月| 久久久久久午夜精品| 国产精品一区二区久久精品无码 | 99久久超碰中文字幕伊人| 久久久www免费人成精品| 久久精品无码一区二区三区日韩| 久久精品麻豆日日躁夜夜躁| 99精品国产综合久久久久五月天| 久久国产香蕉一区精品| 国产免费久久久久久无码| 亚洲一本综合久久| 国产国产成人精品久久| 久久亚洲AV成人出白浆无码国产| 久久人妻少妇嫩草AV蜜桃| 久久久久人妻一区二区三区| 久久精品国产欧美日韩99热| 狠狠色丁香久久婷婷综合_中| 思思久久好好热精品国产| 人妻少妇精品久久| 国产欧美久久久精品影院| 久久人妻少妇嫩草AV蜜桃| 77777亚洲午夜久久多喷| 久久ZYZ资源站无码中文动漫| 久久国产精品成人片免费| 国产成人久久精品区一区二区| 久久这里只有精品首页|