這裡主要是修改inittab
講這個檔案前呢,就要Crowdsourced Security Testing道,核心啟動後會執行第一個init進程,這是所有進程的父進程,它會執行inittab,也就是說這是初始化的一個配置。
講之前先抄下別人的文章解析一下
自訂Linux的啟動與關閉過程(內建inittab詳解)
對Linux系統的啟動和關閉過程進行管理是系統管理員的必備技能之一。管理員必須要清楚系統中運行著哪些服務,如何增加新的服務,如何刪除不必要的服務。本節向Linux管理員介紹自訂啟動和關閉系統時涉及的檔案。
一、 引導過程概覽
當一個Linux系統引導後,Linux啟動管理器(LILO)載入核心,核心首先被解壓縮,顯示裝置被初始化,然後核心開始對系統中的硬體進行檢查。當
發現硬體裝置後,調入相應的模組以支援對硬體的訪問。硬體檢測完畢後,核心將以唯讀方式掛接根檔案系統。假如根檔案系統是完整的,根檔案系統將以讀寫方式
重新掛接。
之後,核心將執行一個叫init的程式。Init執行後,系統就啟動並開始運行。可以對Init進程進行配置,這可以通過/etc/inittab檔案來完成。
/etc/inittab檔案的文法格式如下:
id:run-level:acion:process [argument]
● 第一項是一個惟一的標誌,用以區分inittab檔案中不同條目。
● 第二項指定了該條目在哪種運行等級中應用。
● 第三項指定了採取的動作。
● 第四項是要啟動並執行進程和其參數,可以在這裡指定命令列參數Linux系統的運行等級是通過run-level指定的。在Linux系統中有7個運行等級:
● 0——掛起(不要將initdefault設定為此項)。
● 1——單一使用者模式。
● 2——多使用者,沒有連網的支援。
● 3——完全的多使用者模式,具有連網的支援。
● 4——沒有使用。
● 5——X11,多使用者模式與網路支援。
● 6——重新啟動(不要將initdefault的值設定為此項)。
在init配置這一行中,你可以指定多個運行狀態。指定運行狀態1和3下應用某操作的配置如下:
id:12:action:rocess [argument]
下面列出了系統運行狀態可以使用的動作:
● respawn——當該進程終止時自動啟動。
● wait——該進程只運行1次,init等待該進程,直到該進程結束。
● once——該進程只運行1次。
● boot——該進程在系統啟動時運行,不考慮系統的運行等級。
● bootwait——該進程在系統啟動時運行,init等待該進程,直到該進程結束。
● off——不採取任何動作。用來使一條配置失效,而不用刪除該條配置。可以代替表示注釋的#號
● ondemand——通常沒有使通常不使用。
● initdefault——指定系統的預設運行等級。啟動並執行進程一列被忽略。
● sysinit——該進程在系統啟動時運行一次。Sysinit的動作要比boot和bootwait的優先順序高。
● powerwait——init進程收到SIGPWR訊號下啟動並執行進程。UPS電源在電源發生問題時會向該進程發送SIGPWR訊號。Init進程會等待該進程,直到該進程終止。
● powerfail——同powerwait相同。但是init不會等待進程的終止。
● powerokwait——當init進程收到SIGPWR訊號,並且/etc/powerstatus檔案包括有OK的常值內容。/etc/powerstatus檔案通常由UPS監視軟體建立,用來顯示電源問題已經解決。
● ctrlaltdel——當init進程收到SIGINT訊號時做的動作。
● kbrequest——當init進程收到鍵盤訊號時做的動作。
-------------------------------------------------------
看回inittab
# /etc/inittab
::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
::once:/usr/sbin/telnetd -l /bin/login
::ctrlaltdel:/sbin/reboot
::shutdown:/usr/bin/preshutdown
其中最後一行是加上去的,也就是當執行關機或者重啟會調用preshutdown,這是自己寫的指令碼,這樣就可以實現在關機前執行自訂指令碼