在 linux 系統治理中, /etc 下面的檔案無疑的伴演了極端重要的角色, 在這篇文
章中, 將為各位介紹 /etc 下每個檔案的用途, 及相關指令的運用, 希望能為大家在成
為 System Administrator 的路上有所助益.
非凡要說明的是, 在這篇文章中, 有些檔案仍然沒有提到, 這是因為, 這些檔案都
不是一二十行的描述就可以講完的! 如 /rc.d 下的檔案, inittab 這兩個最好就要合
起來講, 因為這些牽扯到 bootstrapping, 絕對不是三言兩語就可以講完的. 凡是有這
種特性的檔案, 有機會的話將再為各位介紹......
/etc/DIR_COLORS : 設定在用 ls 時 , 各種不同檔案型態所用的顏色 , 但是不能用
pipe 再導向輸出, 否則就沒有各種顏色了. 由檔案的內容可以很
輕易的了解, 如 default 的 Directory 是藍色, 具有可執行檔權
限的是綠色, 而壓縮檔是紅色...... 這些都可依個人喜好來加以
更改. 這個檔案內容寫得很清楚, 想必各位一眼也就可以看得出來
, 在顏色的組成方面, 我們常用 RGB 三原色的成份值來組合出各
種不同的顏色. 由 R,G,B 這個 bit 是 0 或是 1 三個值組合出顏
色這個道理雖淺顯, 但假如我們更了解 R,G, B 的加權值分別是
1,2,4 的話, 那就再也不用翻書查顏色了...... 選擇自己的調色
盤來取代預設的調色盤, 是經常會做的事.
/etc/HOSTNAME : 記錄完整的 hostname 與 domain name , 這個檔案在須要 hostname
的場合會用得到 , 如 /etc/rc.d/rc.M 等 ......
/etc/NETWORKING : YES , 沒什么用 , 改成 NO 會怎樣呢 ? 會對網路的使用會造成影
響嗎 ? 答案是否定的 .
/etc/X11 : link 到 /var/X11/lib/X11
/etc/at.deny : 在這個檔案中可記載那些人不能使用at這個命令來做一些 later job
, 假如 at.deny 是空的, 而且 at.allow 也不存在的話. 那就是每個
人都可以用 at 這個命令.
/etc/at.allow : 相對于 at.deny , 這個檔案記載那些人可以使用 at 這個指令關于
at 這個指令, 我想它的重要性是無庸置疑的, 各位應該要會這個指
令的用法, 會了這個指令, 可以在工作的執行上會更有彈性而關于
at.deny 與 at.allow, at 會先去找 at.allow, 假如存在而且有記
錄一些人的話, 那就只有這些人能使用 at 這個指令, 但假如
at.allow 并不存在的話, 那 at 就會去找 at.deny, 沒有在
at.deny 中的人都可以使用 at 這個指令了! 非凡要說明的是, at
的執行時間也許會不如你所預期的, 比如說明明一個檔你叫它在
7:02 執行, 但它卻會等到 7:05 才執行, 這是因為 crond 是每五分
鐘才去看看 at 的 queue 中是否有要執行的 job. 當然, 你也可以
改成每分鐘都去 check, 但這樣似乎沒有很大的意義, 除非你對時間
的準確度要求的很嚴格, 否則應該沒有必要去動才是. 各位可去看看
/var/spool/cron/crontabs/root 中就有具體記載, 每五分鐘 run
一次 atrun, 所以 at 命令的執行可看成以每五分鐘為一單位.
/var/spool/atjobs: 當你使用 at 來安排一件工作時, 系統會把
你目前的環境變數及所要用 at 執行的工作
抄一份到這個目錄下的檔案中 .
/var/spool/atspool : 使用 at 命令之后所得到的一些訊息 , 會被
記錄在這里 . 可能是 at 所要執行的命令傳
回的錯誤訊息 , 或傳回執行成功的訊息 .
/etc/csh.cshrc :
/etc/csh.login :這兩個檔案應該很熟悉羅! 它就是各位常見到的.cshrc 及.login,
不過大家通常只注重到自己的 home directory 有這兩個檔, 但
/etc 下也有這兩個檔, 不過 /etc 下的這兩個檔絕大部份的情況下
都是由 system administrator 在 maintain, 一般 user 不應該有
權力去改. 順便一提的是, 系統會先去找 /etc 下這兩個檔, 接著才
加上自己 home directory 中那兩個檔的設定. 當然, 有了.login
也有.logout,.logout 中可以寫一些 message, 或執行一些命令, 當
你下達 logout 之后,.logout 就會被執行.
/etc/disktab : ( disk parameter table ) 假如你在剛開機有 pass 磁碟機的一些參數
給 kernel 的話 ( 通常是你的硬碟比較希奇 , 需要 pass cylinders ,
heads , sectors 給 kernel 才抓的到 , 或者是 SCSI 的硬碟有時
有時也要用到一些參數 ) 那這些參數就會被記錄在這里 .
/etc/eXPorts : 這個檔案記錄著你要給別人 mount 的檔案系統 , 這就是典型 NFS
系統所存在的檔案 , TCP/IP for OS/2 若要使用 network file system
而要把自己的 filesystem 讓別人 mount 的話 , 這個檔案也是不可或缺
的. 比如說 , 我所在的 domain name 為 dorm10.nctu.edu.tw , 我要把
我 /usr 下的 filesystem 開放給十舍的人 mount , 那我在 exports 中
要這樣寫 :
/usr *.dorm10.nctu.edu.tw(ro)
接著 , 在 /etc/rc.d/rc.inet2 中 , 找到下面的段落 , 這些段落本來
每一列的前面都有 # , 現在 , 依照下面的內容 , 把這些 # 拿掉 .
......
......
......
# Start the SUN RPC Portmapper.
if [ -f ${NET}/rpc.portmap ]
then
echo -n " portmap"
${NET}/rpc.portmap
fi
......
......
......
# # Start the various SUN RPC servers.
if [ -f ${NET}/rpc.portmap ]
then
# if [ -f ${NET}/rpc.ugidd ]
# then
# echo -n " ugidd"
# ${NET}/rpc.ugidd -d
# fi
if [ -f ${NET}/rpc.mountd ]
then
echo -n " mountd"
${NET}/rpc.mountd
fi
if [ -f ${NET}/rpc.nfsd ]
then
echo -n " nfsd"
${NET}/rpc.nfsd
fi
# # Fire up the PC-NFS daemon(s).
if [ -f ${NET}/rpc.pcnfsd ]
then
echo -n " pcnfsd"
${NET}/rpc.pcnfsd ${LPSPOOL}
fi
# if [ -f ${NET}/rpc.bwnfsd ]
# then
# echo -n " bwnfsd"
# ${NET}/rpc.bwnfsd ${LPSPOOL}
# fi
fi
echo
# Done!
在 client 端可用如 :
mount -vt nfs rebel.dorm10.nctu. 端的 /tmp
/etc/fastboot : 這個檔案是使用 shutdown -f 所產生的 , -f means "fastboot"
在重新 reboot 之后 , 系統會去檢查這個檔是否存在 , 以決定
是否要 run fsck .
/etc/fdPRm : floopy disk parameter table . 一般情況下是不須要更動的 , 除非
你有很希奇格式的軟碟 , 或者你想做出不符合一般格式的磁碟片 .
/etc/nologin : 你也許會感到希奇 , 我的 /etc 這個 directory 下并沒有這個檔啊?
沒錯 , 它平常是不存在的 , 通常會看到這個檔的話 , 那表示系統大
概要 shutdown 了 , 因為系統要 shutdown 了 , 自然不希望有人又
login 進來 , 所以在我們執行 shutdown 時 , nologin 這個檔會自動
的被 create , 里面放著 shutdown message . 實際上 , 當我們在
login 時 , 系統會去檢查有沒有這個檔 , 假如有的話 , 那就會印出
這個檔案中的 message , 然后不讓你 login .
nologin 也有可能是為了某種理由被制造的 , 比如說系統在 maintain
暫時不希望有人 login . 無論如何 nologin 若存在 , 就不能 login
/etc/fstab : 記錄開機要 mount 上來的 filesystem, 這個檔案相當重要! 各位可以
在 /etc/rc.d/rc.S 中找到 /sbin/mount -avt nonfs 這一列, 當執行
到這一列時, mount 就依據 /etc/fstab 中的記載, 自動的將檔案系統
mount 上來. 下面就是一個頗為典型的范例. 假如你一開機就想自動
mount 一些 filesystems, 而不要等到開機后再以手動 mount 的話那把
這些 filesystems 及相關資訊寫在這個檔, 是不錯的選擇. 在檔案格式
方面, 每一列有六個欄位, 不過后面兩個欄位常被省略所以我們只看到
有四個欄位. 其它的兩欄分別為 dump-freq 及 pass-number.
dump-freq 預設值為 0; 而 pass-number 是 fsck 所會參考到的地方,
數字可為 0,1,2...... 1 表示這個 filesystem 將首先被 fsck check,
2 表其次, 馀類推......
# 要掛上的檔案系統 掛在那里 檔案系統格式 讀寫狀況
/dev/hdb2 swap swap defaults
/dev/hdb1 / ext2 defaults
/dev/sbpcd /mnt/cdrom iso9660 ro
/dev/hda1 /mnt/dosc msdos rw
/dev/hda5 /mnt/dosd msdos rw
/dev/hda6 /mnt/dose msdos rw
none /proc proc defaults
/etc/FTPusers : 這個檔案記錄那些人不可以 ftp 簽入系統 , 預設值有 root , uUCp
news . 這些都是為了 security 方面的考量 , 你可以在這里加入
不可 ftp 進來的 user id .
/etc/gateways : 顧名思義 , 這個檔案記錄一些 gateways 的 information
這個檔案的格式如下 :
name1 gateway name2 metric value
當 routed 啟動時, 它會去讀 /etc/gateways 這個檔. 若一個 gateway
并不做 routing information 交換的話, 那它就會被標示成 pass