認識 daemons 可重要了,能夠更清楚的瞭解服務的啟動與運作方式!
本文資料主要針對 Fedora Core 4 的系統進行說明, Fedora Core 1 主要是由 Red Hat Linux 9 改版而來, 這個 Red Hat Linux 9 並不是當前大家聽到的 RHEL 喔!那是在 RHEL 出現之前的產品,基本上是在 2003 年以前的作品了!Fedora Core 4 則是在 2005 年 6 月份釋出,使用的核心是 2.6.11 版,當時是很紅的一個作品!只是生命週期太短,所以用這個 Fedora 系列來介紹 Server, 當時的決定確實有點莫名其妙了...
建議您前往本站查詢最新版本的 Linux distribution 文章來閱讀,比較不會浪費時間。那為何還需要編輯 Fedora Core 4 的資料呢? 鳥哥只想要做個自己曾經撰寫過的文件內容保存而已囉! ^_^!最新文章請前往鳥站首頁查閱囉!
在 Unix-Like 的系統中,常常聽到這個字眼: daemons !那麼什麼是傳說中的 daemons 呢?這些 daemon 放在什麼地方?他的功能是什麼?該如何啟動這些 daemons ?又如何有效的將這些 daemon 管理妥當!?此外,要如何視察這些 daemons 開了多少個 ports ?又這些 ports 要如何關閉?還有還有,曉得你的系統的這些 port 各代表的是什麼服務嗎? 這些都是最基礎需要注意的呢!尤其是在架設網站之前,這裡個觀念就顯的更重要了。
[root@linux ~]# vi /etc/services ......省略...... ftp-data 20/tcp ftp-data 20/udp ftp 21/tcp ftp 21/udp fsp fspd ssh 22/tcp # SSH Remote Login Protocol ssh 22/udp # SSH Remote Login Protocol telnet 23/tcp telnet 23/udp ......省略...... http 80/tcp www www-http # WorldWideWeb HTTP http 80/udp www www-http # HyperT pop3 110/tcp pop-3 # POP version 3 pop3 110/udp pop-3 sunrpc 111/tcp portmapper # RPC 4.0 portmapper TCP sunrpc 111/udp portmapper # RPC 4.0 portmapper UDP netbios-ns 137/tcp # NETBIOS Name Service netbios-ns 137/udp netbios-dgm 138/tcp # NETBIOS Datagram Service netbios-dgm 138/udp netbios-ssn 139/tcp # NETBIOS session service netbios-ssn 139/udp ......省略...... # 這個檔案的內容是以底下的方式來編排的: # <daemon name> <port 與資料型態> <該服務的說明>像上面說的是,第一欄為 daemon 的名稱、第二欄為該 daemon 所使用的 port 號碼與其網路資料封包傳送時候的類型,主要為確定連線後才進行資料傳輸的可靠的 TCP 封包, 以及較快速但不確定性較高的 UDP 封包等。 舉個例子說,那個 e-mail 的發信協定為 smtp 這個服務,而這個服務的使用之 port 即為 25 啦!就這樣!
[root@linux ~]# /etc/init.d/syslog start [root@linux ~]# service syslog start那個 service 是一支程式,基本上,也只是用來啟動 /etc/init.d/ 底下的 shell script 而已~至於指令或者是檔案後面接的參數,亦即是檔名之後加上 start 即可,或者是使用 Red Hat 系統有的這個 service script 來進行啟動的功能!如果你還記得我們前幾節提到過的 shell scripts 的話,那麼或許還記得 case ..... esac 這個有選擇性的項目的語法吧!?沒錯!這幾支服務就是以 bash scripts 裡頭的 case 語法寫成的!因此,只要加上後面的參數,如此一來, scripts 就會自動的去找尋執行檔來執行囉!如果有興趣的話, 可以在你的系統裡面的該目錄下開一個檔案來觀看一下,就知道如何寫囉!
1. 啟動 stand alone 服務的方式:以 syslog 為例: [root@linux ~]# /etc/init.d/syslog start 2. 啟動 super daemon 服務的方式:以 telnet 為例: [root@linux ~]# vi /etc/xinetd.d/telnet (設定方式參考下節) [root@linux ~]# /etc/init.d/xinetd restart另外,除了這樣的啟動方式之外,我們還可以透過 Fedora ( Red Hat 系統 ) 所提供的 service 這個程式來進行 daemon 的啟動喔!其實 service 僅是一支 script 啦, 他可以解析後面帶有的參數,然後去到 /etc/init.d/ 去啟動相對應的服務名稱的 script 而已! 有興趣的話,可以自行去解析 /sbin/service 這支 shell script 啊! 底下我們大略說明一下他的用法!
[root@linux ~]# service [service name] (start|stop|restart|...) 參數: service name:亦即是需要啟動的服務名稱,需與 /etc/init.d/ 對應; start|... :亦即是該服務要進行的工作。 範例: 範例一:重新啟動 crond 這支 daemon : [root@linux ~]# service crond restart [root@linux ~]# /etc/init.d/crond restart在上面的範例當中,其實啟動方式以 service 這個程式,或者直接去到 /etc/init.d/ 底下啟動, 都一樣啦!自行去解析 /sbin/service 就知道為啥了! ^_^
[root@linux ~]# vi /etc/xinetd.conf # # Simple configuration file for xinetd # # Some defaults, and include /etc/xinetd.d/ defaults { instances = 60 <==同一服務的同時連線數最多可達 60 個 log_type = SYSLOG authpriv <==登錄後,會被紀錄到登錄檔的資訊 log_on_success = HOST PID <==若成功的登入時,記錄的資訊有哪些? log_on_failure = HOST <==若登入失敗,則記錄的資訊又是如何? cps = 25 30 <==同一秒鐘內最大連線數量為 25 個,若超過 25 個, 則該服務會暫時停止 30 秒! } includedir /etc/xinetd.d <==更多的設定值在 /etc/xinetd.d 那個目錄內基本上,這個預設參數檔的意義是:『當某個使用 super daemon 管理的服務啟動時,除非該服務已經設定好管理的項目,否則將以上述 xinetd.conf 內的預設參數帶入。』的意思,也就是說,這僅是預設值, 但我們可以自行指定新的設定值來取代 xinetd.conf 內的預設值啦! 也就是說,這個檔案設定成,在預設的狀態下『:一個服務最多可達 60 個連線,且同一秒內連接上的連線不可超過 25 個。而若登入的成功與否時, 會分別記錄不同的資訊到登錄檔當中。』這樣說,可以比較清楚了吧? ^_^ 至於更多的參數說明,我們會在底下再強調的!
service <service_name> { <attribute> <assign_op> <value> <value> ... ............. }第一行一定都有個 service ,至於那個 <service_name> 裡面的內容, 則與 /etc/services 有關,因為他可以對照著 /etc/services 內的名稱與 port number 來決定所要啟用的 port 是那個啊!然後相關的參數就在兩個大刮號中間。 attribute 是一些 xinetd 的管理參數, assign_op 則是參數的設定方法。 assign_op 的主要設定形式為:
attribute (功能) | assing_op (允許的動作) |
說明與範例 |
一般設定項目: | ||
disable | yes no |
允許該 server 可以執行或者是不能執行!當設定為 yes 表示該服務不能執行!
這個設定是一定要的啦。如果我想要啟動某個服務,那麼這裡就要設定成為: |
socket_type | stream dgram raw |
stream 為連線機制較為可靠的 TCP 封包,若為 UDP 封包則使用 dgram 機制。
raw 代表 server 需要與 IP 直接對談!例如 telnet 使用 TCP ,所以:
|
protocol | tcp udp .... |
這個東西說的是,連線的狀態使用的是哪一種協定!?各個協定的代號可以參考 /etc/protocols 內容!此外,除非是你自己設定的服務,否則這個可以不用設定啦! |
wait | yes no |
這就是我們剛剛提到的 Multi-threaded 與 single-threaded
的方式啦!一般來說,我們希望大家的要求都可以同時被啟用,所以可以設定
|
user | UID root |
還記得我們在 帳號管理 那一篇提到的 UID 概念嗎?對啦!這個 UID 就是那個 UID 啦!要注意的是,假如你的服務啟動者不要以 root 為主的話,那麼這個地方就可以改變其他的使用者,例如 nobody !這個咚咚也會有安全防護的機制存在!此外,需要注意這個 UID 必須存在於 /etc/passwd 。 |
group | GID | 跟 user 的意思相同!只是這個 GID 的使用者也必須存在於 /etc/group 當中! |
instances | number UNLIMITED |
這個是『在同一時間之內,同一個服務可以允許的連線數目』的意思, 你可以寫入一個『數字』來控制連線數目,也可以使用 UNLIMITED 來告訴系統『沒有上限』囉!例如你在同時段之內僅允許 ftp 連線有 30 個,那麼這裡就可以輸入 30 啦! |
nice | -20 ~ 19 | 還記得我們在 程序管理 裡面談到的那個 nice 指令嗎?!對啦!這裡就是這個東西囉!數字越小( 負值 )代表該程序越優先被執行! |
server | program 完整檔名 |
這個就是指出這個服務的啟動程式!例如要啟動 telnet 的話,其實就是 in.telnetd
這支程式啦!所以這個時候在這裡輸入
|
server_args | program 一些參數 |
這裡應該輸入的就是你的 server 那裡需要輸入的一些參數啦!例如 in.telnetd 當中,我們還可以加入某些參數! |
log_on_success | PID HOST USERID EXIT DURATION |
在『成功登入』之後,需要記錄的項目:PID 為紀錄該 server 啟動時候的 process ID , HOST 為遠端主機的 IP、USERID 為登入者的帳號、EXIT 為離開的時候記錄的項目、 DURATION 為該使用者使用此服務多久? |
log_on_failure | HOST USERID ATTEMPT RECORD |
當登入失敗之後被 syslog 登入的項目:HOST為遠端主機的 IP,USERID為登入者帳號、 ATTEMPT為記錄登入失敗者企圖的意圖為何、RECORD為記錄遠端主機的資訊!以及為何本機 server 不能啟動的原因!主要有 login, shell, exec, finger 等指令可以使用在這裡!( 基本上,可以在 /etc/hosts.allow 或 /etc/hosts.deny 書寫內容 )。 |
進階設定項目: | ||
env | 'name=value' | 這一個項目可以讓你設定環境變數,環境變數的設定規則可以參考 認識 BASH Shell 。 |
port | number | 這裡可以設定不同的服務與對應的 port ,但是請記住你的 port 與服務名稱必須與 /etc/services 內記載的相同才行! |
redirect | IP_Address port | 將 client 端對我們 server 的要求,轉到另一部主機上去!呵呵!這個好玩呦! 例如當有人要使用你的 ftp 時,你可以將他轉到另一部機器上面去!那個 IP_Address 就代表另一部遠端主機的 IP 囉! |
includedir | directory | 表示將某個目錄底下的所有檔案都給他塞進來 xinetd.conf 這個設定裡頭!這東西有用多了, 如此一來我們可以一個一個設定不同的項目!而不需要將所有的服務都寫在 xinetd.conf 當中!你可以在 /etc/xinetd.conf 發現這個設定呦! |
安全控管項目: | ||
bind | IP_Address | 這個是設定『允許使用此一服務的介面卡』的意思!舉個例子來說,你的 Linux 主機上面有兩個 IP ,而你只想要讓 IP1 可以使用此一服務,但 IP2 不能使用此服務,這裡就可以將 IP1 寫入即可!那麼 IP2 就不可以使用此一 server 囉 |
interface | IP_Address | 與 bind 相同 |
only_from | 0.0.0.0 192.168.1.0/24 host_name domain_name |
這東西用在安全機制上面,也就是管制『只有這裡面規定的 IP 或者是主機名稱可以登入!』如果是 0.0.0.0 表示所有的 PC 皆可登入,如果是 192.168.1.0/24 則表示為 C class 的網域!亦即由 192.168.1.1 ~ 192.168.1.255 皆可登入!另外,也可以選擇 domain name ,例如 .ev.ncku.edu.tw 就可以允許成大環工系的網域 IP 登入你的主機使用該 server ! |
no_access | 0.0.0.0 192.168.1.0/24 host_name domain_name |
跟 only_from 差不多啦!就是用來管理可否進入你的 Linux 主機啟用你的 server 服務的管理項目! no_access 表示『不可登入』的 PC 囉! |
access_times | 00:00-12:00 HH:MM-HH:MM |
這個項目在設定『該服務 server 啟動的時間』,使用的是 24 小時的設定!例如你的 ftp 要在 8 點到 16 點開放的話,就是: 08:00-16:00。 |
umask | 000 777 022 |
還記得在 檔案權限 裡面約略提過的 umask 這個東西嗎?呵呵!沒錯!就是那個鬼玩意兒囉! 可以設定使用者建立目錄或者是檔案時候的屬性!系統建議值是 022 。 |
[root@linux ~]# vi /etc/xinetd.d/telnet service telnet { flags = REUSE <==額外的參數使用 REUSE socket_type = stream <==使用 TCP 的封包格式 wait = no <==可以有多個連線同時連進來 user = root <==啟動者預設為 root server = /usr/sbin/in.telnetd <==使用的是這支程式! log_on_failure += USERID <==若登入錯誤,『加計』記錄使用者 ID disable = yes <==此服務預設關閉! }其實,主要的參數可以參考上一小節的表格,也可以直接利用『 man xinetd.conf 』來查閱! 不過,如果你對於這樣的設定並不滿意的話,其實還可以手動來修改呢! 因為我們知道, telnet 並不是個十分安全的服務,詳細機制可以參考 伺服器篇 的 遠端連線伺服器 來查閱, 所以,如果你想要更多的安全機制,舉例來說,你想要讓 telnet 在區域網路內與 Internet 上面的連線機制有差異時,例如這樣:
[root@linux ~]# vi /etc/xinetd.d/telnet # 先針對對內的較為鬆散的限制來設定: service telnet { disable = no <==預設就是啟動 telnet 服務 bind = 192.168.1.100 <==只允許經由這個介面卡的封包進來 only_from = 192.168.1.0/24 <==只允許 192.168.0.0/24 這個網段 的主機連線進來使用 telnet 的服務 no_access = 192.168.1.{120,130} <==不許這些 PC 登入 instances = UNLIMITED <==同時允許連線不限制! nice = 0 <==使用的優先順序較高 flags = REUSE <==額外使用的參數 socket_type = stream <==使用 tcp 封包常用的連線型態 wait = no <==不需等待,可以同時允許多個連線 user = root <==啟動程序的使用者身份 server = /usr/sbin/in.telnetd<==服務啟動的程式 server_args = -a none <==上面那個程式的參數 log_on_failure += USERID <==錯誤登入時,要記錄下來的內容 } # 再針對外部的連線來進行限制呢! service telnet { disable = no <==預設就是啟動 telnet 服務 bind = 140.116.44.125 <==只允許經由這個介面卡的封包進來 only_from = 140.116.0.0/16 <==只允許 140.116.0.0 ~ 140.116.255.255 這個網段連線進來使用 telnet 的服務 only_from += .edu.tw <==累加設定,只有教務界才能連線! access_times = 1:00-9:00 20:00-23:59 <==每天只有這兩個時段開放服務 umask = 022 <==建立檔案時的預設屬性設定 instances = 10 <==同時只允許 10 個連線 nice = 10 <==使用的優先順序較低 flags = REUSE <==額外使用的參數 socket_type = stream <==使用 tcp 封包常用的連線型態 wait = no <==不需等待,可以同時允許多個連線 user = root <==啟動程序的使用者身份 server = /usr/sbin/in.telnetd<==服務啟動的程式 server_args = -a none <==上面那個程式的參數 log_on_failure += USERID <==錯誤登入時,要記錄下來的內容 }在上面這個範例當中,我們用了很多的網路 IP 顯示方式,包括 192.168.1.0/24 , 以及 140.116.0.0/16 ,這代表『 192.168.1.0~192.168.1.255 的所有 IP 』以及 『 140.116.0.0 ~140.116.255.255 所有的 IP 』更詳細的說明,我們會在伺服器篇內詳談的。 用了這個設定值之後,你會發現你的 telnet 針對兩個網段來設計了! 設計完成之後,由於這是 xinetd 的設定檔,所以啟動的方式與觀察的方式為:
# 如果您的 telnet 本來就有啟動的話,那麼會發現有一個連線存在你的系統中 [root@linux ~]# netstat -tulnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 19255/xinetd # 看到喔!是 xinetd 的 program name 呢! # 重新修改 /etc/xinetd.d/telnet 之後,重新啟動的方式與觀察為: [root@linux ~]# /etc/init.d/xinetd restart [root@linux ~]# netstat -tulnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 140.116.44.125:23 0.0.0.0:* LISTEN 19281/xinetd tcp 0 0 192.168.1.100:23 0.0.0.0:* LISTEN 19281/xinetd # 有沒有看到兩個介面啊~而且, PID 會是同一個呢!呵呵!如上面的設定,我們可以將 telnet 的啟動項目進行更多的限制! 如此一來,將有助於我們的安全防護呢!尤其如果可以針對不同的介面來設定,嘿嘿! 就更加的棒囉!不過,請注意喔!如果照上面的設定,那麼您的主機上面將會開了兩個 23 port 的介面,分別是給兩個介面來使用的呢!嗯!真好玩?同樣的, 你也可以針對自己的喜好來設定你的其他 daemon 使他掛在 xinetd 底下呢!
<service(program_name)> : <IP, domain, hostname> : <action>所以我們要先找出來那個 service_name 才行,例如以我們剛剛的 telnet 為例,那個 service_name 是什麼呢?其實指的就是在 xinetd.conf 設定檔中的 server 這個設定後面接的程式名稱啦!所以, telnet 在 FC4 底下的名稱為 in.telnetd 因此,如果你不想讓 140.116.44.202 這個位址及 140.116.32.0/255.255.255.0 這個 C class 的網域進入你的主機的話,那麼可以這樣在 /etc/hosts.deny 裡面設定: ( 關於 IP, 網域, 網段, 還有相關的網路知識,在這個基礎篇當中我們不會談到, 詳細的資料請先自行參考伺服器架設篇的內容! )
[root@linux ~]# vi /etc/hosts.deny
in.telnetd : 140.116.44.202 140.116.32.0/255.255.255.0 : deny
當然也可以寫成兩行,亦即是:
[root@linux ~]# vi /etc/hosts.deny
in.telnetd : 140.116.44.202 : deny
in.telnetd : 140.116.32.0/255.255.255.0 : deny
這樣一來,對方就無法以 telnet 進入你的主機啦!方便吧!不過,既然如此,為什麼要設定成
/etc/hosts.allow 及 /etc/hosts.deny 兩個檔案呢?其實只要有一個檔案存在就夠了,
不過,為了設定方便起見,我們存在兩個檔案,其中需要注意的是:
[root@linux ~]# vi /etc/hosts.allow in.telnetd: 140.116.44.0/255.255.255.0 in.telnetd: 140.116.79.0/255.255.255.0 in.telnetd: 140.116.141.99 in.telnetd: LOCAL [root@linux ~]# vi /etc/hosts.deny in.telnetd: ALL那麼有沒有更安全的設定,例如,當當有其他人掃瞄我的 telnet port 時,我就將他的 IP 記住!以做為未來的查詢與認證之用! 是有的!只是,那就得要有額外的動作參數加在第三欄了。主要的動作有:
[root@linux ~]# vi /etc/hosts.deny in.telnetd: ALL: spawn (echo "security notice from host `/bin/hostname`" ;\ echo; /usr/sbin/safe_finger @%h ) | \ /bin/mail -s "%d-%h security" root & \ : twist ( /bin/echo -e "\n\nWARNING connection not allowed.\n\n" )在上面的例子中,第三行的 root 那個帳號,可以寫成你的個人帳號或者其他 e-mail ,以免很少以 root 身份登入 Linux 主機時,容易造成不知道的情況,另外,最後幾行,亦即 :twist 之後的那幾行為同一行。如此一來,當未經允許的電腦嘗試登入你的主機時, 對方的螢幕上就會顯示上面的最後一行,並且將他的 IP 寄到 root ( 或者是你自己的信箱 )那裡去! 另外請注意,那個 /usr/sbin/safe_finger 是由 tcp_wrappers 套件所提供的, 所以您必須要安裝該套件才行喔! ^_^
範例一:找出目前系統開啟的『網路服務』有哪些? [root@linux ~]# netstat -tulp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 *:ftp *:* LISTEN 1605/vsftpd tcp 0 0 *:pop3 *:* LISTEN 1613/dovecot tcp 0 0 *:ssh *:* LISTEN 1587/sshd udp 0 0 *:bootpc *:* 26035/dhclient # 看一看上頭,Local Address 的地方會出現主機名稱與服務名稱, # 要記得的是,可以加上 -n 來顯示 port number ,而服務名稱與 port # 對應則是寫在 /etc/services 裡頭喔! 範例二:找出所有的有監聽網路的服務 (包含 socket 狀態): [root@linux ~]# netstat -lnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 *:ftp *:* LISTEN 1605/vsftpd tcp 0 0 *:pop3 *:* LISTEN 1613/dovecot tcp 0 0 *:ssh *:* LISTEN 1587/sshd udp 0 0 *:bootpc *:* 26035/dhclient Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node PID/Program name Path unix 2 [ ACC ] STREAM LISTENING 5188 1673/master private/tlsmgr unix 2 [ ACC ] STREAM LISTENING 5192 1673/master private/rewrite ......以下省略...... # 仔細的瞧一瞧啊,除了原有的網路監聽 port 之外,還會有 socket 顯示在上面, # 我們可以清楚的知道有哪些服務被啟動呢! 範例三:觀察所有的網路連接狀態,查詢是否有異常的連線。 [root@linux ~]# netstat -anp # 利用這個指令可以查出有問題的連線,還可取得 PID, # 可以用來 kill 掉任何一個覺得懷疑的程序呢!利用 netstat 可以取得很多跟網路有關的服務資訊,透過這個指令,我們可以輕易的瞭解到網路的狀態, 並且可以透過 PID 與 kill 的相關功能,將有問題的資料給他剔除說~ 當然啦,要更詳細的取得 PPID 的話,才能夠完全的抵擋有問題的程序啦!
[root@linux ~]# chkconfig --list [root@linux ~]# chkconfig [--add|--del] [service_name] [root@linux ~]# chkconfig --level [0123456] [service_name] [on|off] 參數: --list :僅將目前的各項服務狀態列出來 --add :增加一個服務名稱給 chkconfig 來管理,該 service_name 必須在 /etc/init.d/ 內! --del :刪除一個給 chkconfig 管理的服務 --level:設定某個服務在該 level 下啟動 (on) 或關閉 (off) 範例: 範例一:列出目前系統上面所有被 chkconfig 管理的服務 [root@linux ~]# chkconfig --list |more NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off .....中間省略..... snmpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off yum 0:off 1:off 2:off 3:off 4:off 5:off 6:off xinetd based services: chargen: off .....中間省略..... telnet: off # 這個 chkconfig 的輸出主要分為兩大部分,分別是 stand alone 的服務, # 他會分出 0~6 個 run level 的資料,亦即上半部的顯示,至於下半部則是 # super daemon 管理的服務的輸出情況!由 super daemon 管理的服務, # 是沒有 run level 之分的喔! 範例二:顯示出目前在 run level 3 為啟動的服務 [root@linux ~]# chkconfig --list | grep '3:on' 範例三:讓 atd 這個服務在 run level 為 3, 4, 5 時啟動: [root@linux ~]# chkconfig --level 345 atd on瞧! chkconfig 是否很容易管理我們所需要的服務呢?真的很方便啦~ 他的功能其實很簡單,只是直接在 /etc/rc.d/rc[0-6].d 裡面針對某服務進行連結檔案的設定而已。 例如上面的範例三,基本上,他僅是在 /etc/rc.d/rc3.d/, /etc/rc.d/rc4.d/ 及 /etc/rc.d/rc5.d/ 裡面,建立一個連結檔案, 該連結檔案連結到 /etc/init.d/atd 裡面就是了!這樣說,可以理解嗎?
[root@linux ~]# vi /etc/init.d/myvbird #!/bin/bash # chkconfig: 35 80 70 # description: 沒啥!只是用來作為練習之用的一個範例 echo "Nothing" # 這個檔案很好玩喔!你可以參考你自己系統上面的檔案; # 基本上,比較重要的是第二行,他的語法是: # chkconfig: [runlevels] [start number] [stop number] # 其中, runlevels 為不同的 run level 狀態, start number 與 # stop number 則是在 /etc/rc.d/rc[35].d 內建立以 S80myvbird # 及 K70myvbird 為檔名的設定方式! [root@linux ~]# chkconfig --add myvbird [root@linux ~]# chkconfig --list myvbird myvbird 0:off 1:off 2:off 3:on 4:off 5:on 6:off # 看吧!加入了 chkconfig 的管理當中了!再去看看 /etc/rc.d/ 底下的檔案: [root@linux ~]# find /etc/rc.d/ -type l | grep 'myvbird'|sort /etc/rc.d/rc0.d/K70myvbird /etc/rc.d/rc1.d/K70myvbird /etc/rc.d/rc2.d/K70myvbird /etc/rc.d/rc3.d/S80myvbird /etc/rc.d/rc4.d/K70myvbird /etc/rc.d/rc5.d/S80myvbird /etc/rc.d/rc6.d/K70myvbird # 很有趣吧!如果要將這些資料都刪除的話,那麼就下達這樣的情況: [root@linux ~]# chkconfig --del myvbird [root@linux ~]# rm /etc/init.d/myvbirdchkconfig 真的是個不錯用的工具吧!尤其是當你想要自己建立自己的服務時! ^_^
[root@linux ~]# ntsysv [--level <levels>] 參數: --level :後面可以接不同的 run level ,例如 ntsysv --level 35 範例: 範例一:直接編輯目前 run level 底下的開機預設啟動項目: [root@linux ~]# ntsysv挺不錯用的吧!還可以知道該服務的意義呢!也就是說, 如果你想要知道某個 /etc/init.d/ 底下的服務啟動的資訊為何, 直接以 vi 開啟該檔案,去察看一下 description: 的內容即可知道啊! ^_^# 此時,你可以使用底下的按鍵來進行選擇: # 上下鍵: 可以在中間的方框當中,在各個服務之間移動; # 空白鍵: 可以用來選擇你所需要的服務,前面的 [*] 會有 * 出現; # tab 鍵: 可以在方框、OK、Cancel 之間移動; # [F1]鍵: 可以顯示該服務的說明。舉例來說,移動到 myvbird 按下 F1 後 # 沒錯!不要懷疑,這個就是 /etc/init.d/myvbird 檔案內的 description: # 後面接的內容啊!瞭解了嗎? ^_^
Stand Alone Daemons | |
服務名稱 | |
基本說明 | |
anacron | |
當你的 Linux 主機並不是全天候開機的時候,這個 anacron 就可以幫你執行在『 crontab 』既定的時間內沒有執行的工作!舉個例子來說,當你的主機在晚上 12:00 會自動關閉,但是偏偏 crontab 這個例行性工作是在 4:00 工作, 這個時候例行性工作不是都沒有做到嗎?嗯! anacron 就可以使用啦! | |
apmd | |
apmd 是 Adventage Power Management daemon 的縮寫,顧名思義,可以用來瞭解系統的『電池電量』, 如果對於手提式電腦才有需要吧我想! | |
atd | |
這個總該不陌生了吧!就是 僅進行一次的工作排程囉! 如果忘記了!趕緊去查看一下! | |
autofs | |
如果你的 Linux 是用來做為伺服器的,那麼這個服務就不需要啟動了。 因為這個服務可以自動掛載很多的檔案系統與裝置,舉例來說,自動掛載光碟啊、USB硬碟啊等等的。 如果是主機,我們可以自己好好的控制,不需要系統自動掛載。如果是個人桌上型電腦, 那麼啟動這個 daemon 也不錯! | |
crond | |
用來執行例行性命令的 daemon ,請務必要啟動他! | |
cups | |
這個服務在管理 Linux 主機上面的印表機的! 他可以用來作為本機印表機的管理,也可以用來管理網路印表機, 全名為 Common UNIX Printing System (CUPS)。如果您的網路環境當中有印表機, 而且想要透過 Linux 來提供給所有用戶使用,那麼就可以管理一下 cups 囉~ | |
gpm | |
在文字模式裡面可以使用 mouse 來從事『複製、貼上、移動游標』等等的功能! 如果你是個教師,需要使用滑鼠在純文字介面底下秀出結果的話, 再使用這玩意就好了。基本上,不需要啟動他! | |
httpd | |
這個玩意兒可有趣的很哩~一般來說,新手最喜歡架設 Web 網站囉, 而 WWW 伺服器,就是這個玩意兒啊~更詳細的資訊請參考伺服器篇的內容 | |
iptables | |
這個傢伙就是 Linux 上面有名的『防火牆』啦~如果你的 Linux 是在區網內, 而且沒有連上 Internet 的話,那麼這個防火牆機制可以暫時不要啟動, 因為可能會抵擋掉你主機所提供的服務。如果連上了 Internet ,不開這個, 會死的很慘~ | |
kudzu | |
這個 daemon 預設是啟動的,他會在開機的時候去偵測你的硬體, 如果發現硬體有異動,或者是有新增其他的硬體, 那麼 kudzu 服務會主動的以 Fedora 相關的設定軟體來設定你的新硬體。 不過,對於穩定的系統來說,實在沒有必要在開機的時候偵測一次硬體,因為....很慢~ | |
named | |
這是個很複雜的玩意兒,那就是 DNS (Domain Name System)。除非你真的很瞭解 DNS, 否則這個服務不需要啟動的! | |
netfs | |
這個服務在自動的掛載 /etc/fstab 裡頭記錄的關於網路檔案系統,如 NFS, SMB (網芳) 等等,如果你的主機本身並沒有掛載來自網路上的 filesystem,不需要啟動。 | |
network | |
看檔名就知道啦!是用來管理網路的,所以,當然要啟動了。 不論你有沒有網路卡,這個服務都要啟動,因為至少 network 會驅動 lo 這個網路介面。 更多的網路相關資訊,參考伺服器篇的內容。 | |
nfs nfslock |
|
NFS 為 Network File System 的縮寫,我們會在伺服器篇談這個服務, 一般來說,不需要啟動這個玩意兒~ | |
ntpd | |
這個服務的全名是:Network Time Protocol,意思就是在進行網路校時的一個服務。 一般來說,不需要啟動他。 | |
portmap | |
這個咚咚與很多 RPC 的服務有關,例如 NFS 等等。一般來說,如果你的 Linux 尚未連上 internet, 這個服務不需要啟動。不過,為了方便起見,各主要 linux distributions 都預設啟動這個服務的。 鳥哥通常是關掉他!哈哈! | |
postfix sendmail |
|
這個就是郵件伺服器啦!由於近來網路垃圾大增,所以,目前所有的 Linux distributions 預設都要啟動 postfix 之類的郵件伺服器後,我們發出的信件才會接收或者是傳送。 預設的情況下,一定會有一個郵件伺服器啟動的,不要關閉他~ 否則我們主機上面的帳號彼此之間無法以 email 傳送資料喔! | |
smb | |
這個服務其實就是模擬 Linux 成為 Windows 的網路上的芳鄰上頭的主機啦~ 由於我們還沒有連上 Internet 啊,所以自然不需要啟動他啦~ | |
sshd | |
這個是取代 telnet 的遠端連線伺服器 daemon ,幾乎所有的 Linux distributions 預設都會啟動他~ 我們也可以透過這個玩意兒讓遠端主機連線進來啊!所以當然是啟動的啊! | |
syslog | |
這個是登錄檔記錄的一個重要的 daemon ,沒有他,你的主機幾乎沒有事後監控的功能~ 所以請務必啟動。我們會在 認識登錄檔 當中來談這個咚咚~ | |
xfs | |
X Font Server, xfs,顧名思義,他是用來管理 X Window 的字形的一個服務, 如果你是 run level 5 ,或者是想要啟動 X Window 的話,那麼這個玩意兒就不能不啟動。 不過,如果你跟鳥哥一樣都是使用純文字介面的話,這個玩意兒不用啟動啦! | |
xinetd | |
剛剛上頭才講過這個玩意兒,不會就忘了吧?務必啟動喔! | |
Super Daemons | |
chargen chargen-udp |
|
主要的功能在於提供類似遠端打字的咚咚吧! | |
daytime daytime-udp |
|
用來作為 daytime 的服務,這是 NTP (Network Time Protocol) 的上一代, 目的在進行時間的校正工作。不過,因為他不會計算網路連線過程當中的遲滯時間, 並且是以明碼傳送,因此除了特殊目的外,目前已經很少使用這玩意兒了 | |
krb5-telnet | |
用來取代傳統的 telnet 服務!可提供 krb 5 的驗證機制。 | |
gssftp | |
用來取代傳統的 ftp server,可提供 krb 5 的驗證機制 |