2010年12月23日 星期四

[Linux 小學堂] Port 的關閉流程

Source (鳥哥) 
其實 port 是由某些程式所啟動的,所以要關閉某些 port 時,那就直接將某個程式給他關閉就是了! 那關閉的方法你當然可以使用 kill ,不過,畢竟不是正統的解決之道,因為 kill 這個指令通常具有強制關閉某些程式的功能,但我們想要正常的關閉該程式啊! 所以,就利用系統給我們的 script 來關閉就好了啊。 在此同時,我們就得再來稍微複習一下,一般傳統的服務有哪幾種類型? 

stand alone 與 super daemon 
在鳥哥的 Linux 私房菜 -- 基礎學習篇內談到, 在一般正常的 Linux 系統環境下,服務的啟動與管理主要有兩種方式: 

* stand alone
顧名思義,stand alone 就是直接執行該服務的執行檔,讓該執行檔直接載入到記憶體當中運作, 用這種方式來啟動可以讓該服務具有較快速回應的優點。一般來說,這種服務的啟動 script 都會放置到 /etc/init.d/ 這個目錄底下,所以你通常可以使用:『 /etc/init.d/sshd restart 』之類的方式來啟動這種服務;

* Super daemon
用一個超級服務作為總管,以管理一些網路服務。在 CentOS 4.x 裡面使用的則是 xinetd 這個 super daemon 啊!這種方式啟動的網路服務雖然在回應上速度會比較慢, 不過,可以透過 super daemon 額外提供一些控管,例如控制何時啟動、何時可以進行連線、 那個 IP 可以連進來、是否允許同時連線等等。通常設定檔放置在 /etc/xinetd.d/ 當中,但設定完畢後需要重新以『 /etc/init.d/xinetd restart 』重新來啟動才行!

關於更詳細的服務說明,請參考基礎篇的 認識服務 一文。好,那麼如果我想要將我系統上面的 port 631 關掉的話, 那應該如何關閉呢?最簡單的作法就是先找出那個 port 631 的啟動程式喔! 
dhcppc91:~/tools # netstat -tunlp | grep 631 
tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN 11839/cupsd 
udp 0 0 0.0.0.0:631 0.0.0.0:* 11839/cupsd 
# 我們可以透過 locate 配合正規表示法找到cupsd這個指令的! 
dhcppc91:~/tools # locate cupsd | grep "/cupsd" 
...(以上省略)... 
/usr/sbin/cupsd 
...(以下省略)... 
# 然後再由 rpm 來處理! 
dhcppc91:~/tools # rpm -qf /usr/sbin/cupsd 
cups-1.1.23-40.6 
# 找到了!就是這個套件!所以將他關閉的方法可能就是: 
dhcppc91:~/tools # rpm -qc cups | grep init  
/etc/init.d/cups 
/etc/init.d/cupsrenice 
dhcppc91:~/tools # /etc/init.d/cups stop <關閉服務> 

Ps. 透過上面的這個分析的流程,你可以利用系統提供的很多方便的工具來達成某個服務的關閉! 為啥這麼麻煩?不是利用 kill -9 2030 就可以刪掉該服務了嗎? 是沒錯啦!不過,你知道該服務是做啥用的嗎?你知道將他關閉之後,你的系統會出什麼問題嗎? 如果不知道的話,那麼利用上面的流程不就可以找出該服務套件,再利用 rpm 查詢功能, 不就能夠知道該服務的作用了!

沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...