Linux系統服務之inetd
inetd進程介紹:
inetd程序是一個Linux守護進程。您可能已經知道守護進程是一些特殊的程序:它們在被啟動之后,自愿放棄對調用自己終端的控制權。守護進程與系統其余部分的接口只有依靠進程間通信(Interprocess Communication,IPC)通道、或者依靠向系統全局性日志文件(Log File)才能發送數據項。
inetd的角色是作為Telnet和FTP等與網絡服務器相關的進程的“超級服務器”。這是一個簡單的道理:并不是全部的服務器進程(包括那些接受新的Telnet和FTP連接的進程)都會如此頻繁地被調用,以至于必須要有一個程序隨時運行在內存中。因此為了避免出現可能有幾十種服務都運行在內存中準備被使用的情況,它們都列在inetd的配置文件/etc/inetd.conf中。而代替它們的是inetd監聽著進入的連接。這樣只需要有一個進程在內存中就可以了。
inetd的另外一個優點是程序員并不想把需要網絡連接的進程都編寫到系統中去。inetd程序將處理網絡代碼,并把進入的網絡數據流作為各個進程的標準輸入(Standard-In,即Stdin)傳遞到其中。這些進程的輸出(Stdout)將會被送回連接到該進程的主機去。
注意:除非你正在進行編程,否則是不需要連接到inetd的Stdin/Stdout功能上。從另一方面來說,如果有人打算編寫一個簡單的命令腳本程序并讓它出現在網絡中,就值得深入研究這個極為強大的功能。
1.etc/inetd.conf文件
etc/inetd.conf文件是inetd的配置文件。它的結構很簡單:每一行語句代表一種服務。服務定義語句的格式如下所示:
srvce_name sock_type protocol [no]wait user srvr_prog srvr_prog_args
2.安全性與inetd.conf文件
你將會發現在大多數的linux安裝中,許多服務在缺省的情況下是打開的。如果你的系統將向因特網開放(包括通過撥號點對點協議被連通),你想做的第一件事就會是把一切都關閉!決不要假設因為你的系統沒有對公眾進行宣傳,別人就不會找到它。從相反的方向看,尋找存在安全性攻擊隱患系統的工具軟件是既容易找到又容易使用的。
關閉服務的第一個步驟是把etc/inetd.conf文件里所有用不著的服務性說明語句都改為注釋語句。
一般來說,你會發現下面的方法更容易使用:先把全部東西都改為注釋語句(徹底關閉網絡服務),再有選擇地打開需要的服務。
在完成對etc/inetd.conf文件的修改之后,需要向守護進程報告其配置文件已經被修改了。這是通過向該守護進程發送HUP信號來實現的。先使用下面的命令找出inetd.conf對應的進程ID:
[ root@ford /root ] # ps auxw | grep inetd | grep -v grep
這個命令的輸出類似于下面的內容:
root 359 0.0 0.1 1232 168 ? S Jun21 0 : 00 inetd
輸出中的第二列告訴我們進程ID號(這里就是359)。為了發送HUP信號,我們需要使用Kill命令(把這個程序叫做Kill多少有些誤導。實際上,它只是向進程發送信號而已。缺省的情況下,它會發出請求某個程序終止運行的信號)。
下面是使用Kill命令發送HUP信號的方法:
$ kil -1 359
應該把上面命令中的359換成從你的系統上得到的進程編號。
上面文章介紹了linux系統服務中的inetd,希望大家有所收獲。
【編輯推薦】
- Linux系統服務之init
- Linux服務器集群系統之實現虛擬服務器的相關方法
- 如何來量身定制安全的Linux系統服務平臺
- Fedora Core Linux系統服務器的調試手記
- Linux系統服務:Apache與Tomcat整合技巧
- 管理Linux的inetd服務器
- 4.3.4 解讀/etc/xinetd.conf和/etc/xinetd.d/*
- 自己動手應用Suse Linux開啟Ftp/xinetd