Linux教程-系統管理-/etc下的檔案詳解(轉)
Linux教程-系統管理-/etc下的檔案詳解(轉)[@more@]在 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 交換的話, 那它就會被標示成 passive,
假如有做 routing information 的交換 ( 這臺機器上有 run routed )
, 那就會標示成 active net 或 host 這個關鍵字是指出 route 是到網
路或是到一臺特定的機器上. name1 就是目地網路或目地機器的名字.
這個名字可用 /etc/hosts 或是 /etc/networks 中的 symbolic host
name. name2 就是訊息將被送往之 gateway 的 name或 IP address.
/etc/group : 如同 /etc/passwd 列出了系統中所有的使用者名字 , /etc/group
定義系統中所有的 group name 與相關訊息 .
格式為: group_name:passwd:GID:user_list
如 : author::200:jhhsu,emotion,passion
上面的例子表示 jhhsu,emotion,passion 都是屬於 author 這個 group
通常 passwd 那欄是空白的 , 表示不用密碼 . 或放一個 * 號
以下也是一個典型的例子 :
root::0:root,jhhsu
bin::1:root,bin,daemon
daemon::2:root,bin,daemon
sys::3:root,bin,adm
adm::4:root,adm,daemon
tty::5:
disk::6:root,adm
lp::7:lp
mem::8:
kmem::9:
wheel::10:root,jhhsu
shadow::11:root
mail::12:mail
news::13:news
uucp::14:uucp
man::15:man
users::100:games
bbs:*:99:bbs,bbsuser,bbsroot
當然啦 ! 這個檔案只能為 superuser 所讀寫 , 一個 superuser 可使
用 groupadd , groupdel , groupmod 來管理 /etc/group 這個檔 ,
要手動管理也是可以 . 下面是這三個指令的用法 :
groupadd [ -g gid [ -o ] ] group_name
groupdel group_name
groupmod [ -g gid [ -o ] ] [ -n new_group_name ] group_name
/etc/hosts : 這個檔案記錄著 IP address 至 hostname 的 mapping . 如我們想把
ccsun21.csie.nctu.edu.tw 取個別名叫 : oldstock
那我們就可以在這個檔案裡寫如下的敘述 :
140.113.17.151 oldstock
如此一來 , 以後我們 telnet oldstock 就等於 telnet
140.113.17.151
在這個檔案中 , 至少會有兩列 , 一列為 loopback , 這是為了偵錯目的
而設的 , 另一列為 local host , 就是你自己的機器 .
/etc/hosts.equiv : 在裡面可以設定一些 remote machine , 而從這些 remote
machine 利用 rsh 或 rlogin 連回 local machine 的話
便不用輸入密碼
同樣的東西也可以在 .rhosts 見到 . 比如說在 ccsun22.csie
.nctu.edu.tw 上你的 Home Directory 建一個 .rhosts 檔 ,
裡面的內容如下:
rebel.dorm10.nctu.edu.tw jhhsu
以後只要在 rebel.dorm10.nctu.edu.tw 上利用 rsh 或 rlogin 至
ccsun22.csie.nctu.edu.tw 的話
, 也不須要輸入密碼
rsh -l jhhsu ccsun22.csie.nctu.edu.tw 不過這東西最好不要亂設 , 以信得過的 hosts 為主 ,
才不會造成 security 上的困擾 .
/etc/hosts.deny : 設定那些 remote hosts 不可以使用 inetd
/etc/hosts.allow : 設定那些 remote hosts 可以使用 inetd
至於 inetd 有那些 service , 各位可以去看看 /etc/inetd.conf
從裡面就可以很清楚的可以看得出來 .
假如你採取比較 close 作法的話 , 可以在 hosts.deny 中寫
ALL:ALL
但是如此一來 , 只要不是從 localhost 來的 , 那大概都不必
玩了 , 所以 , 我們也要適時的在 hosts.allow 中加入可以
access 的 hosts , 如 :
ALL:140.113.17. ALL:140.113.4.
ALL:140.113.6.
/etc/hosts.lpd : 記錄可 access printer 的 hosts . 假如一臺 printer可被網路上
的許多臺主機所共用, 那 printcap 這個檔案必須得描述完整的網
路設定資訊. 在比較嚴密控制的情況下, 有兩個條件必須符合首先,
local machine 必須在 remote machine 的 /etc/hosts.eqiuv 中,
或者, 在 remote machine 的 /etc/hosts.lpd 中被記載第二, 使
用者必須有 remote machine 的帳號.
/etc/inetd.pid : inetd process id
/etc/issue : 這個檔案被記錄著 login prompt 前所要 echo 的 message , 特別要注
意的是 /etc/rc.d/rc.S
下面的四行若沒有 mark , 則每次開機 issue 及 motd 都會被改變
假如你要有自己的設定 , 下面一定都要 mark 起來如下 :
#echo > /etc/issue
#echo Welcome to Linux /bin/uname -a | /bin/cut -d -f3. >> /etc/issue
#echo >> /etc/issue
#echo "/bin/uname -a | /bin/cut -d -f1,3. (Posix)." > /etc/motd
/etc/klogd.pid : klogd process id
/etc/ld.so.conf : 記錄一些 library 所在的目錄
/etc/magic : 初看這個檔案時 , 也許只能隱隱約約的看到 : 這個檔案似乎是描述一些
檔案的格式. 沒錯, 這個檔案記載了許多檔案格式的識別字串或方法那
這個檔在那裡會用的到呢? 各位有使用過 file 這個指令嗎? file 這個
指令的命令格式為:
file [ -c ] [ -z ] [ -L ] [ -f namefile ] [ -m magicfile ] file
file 這個指令非常有趣, 它可以告訴你某一個檔案的格式, 如它是一個
text 檔, 或是一個 shell script 或 DOS 可執行檔等...... 而 file
這個指令, 就是去參考 /etc/magic 這個資料庫. 假如你知道某一檔案
的識別字, 而原來 magic 這個資料庫沒有記錄, 那你可以把識別方法加
到資料庫中, 或乾脆建立自己的資料庫算了.
/etc/motd : 這個檔很簡單 , 就是 message of the day 的意思 , 裡面可以寫一些
message , 而這些 message 會在 login shell 之前被顯示出來 .
通常都是 system administrator 要告知 user 的一些訊息. 而關於每次
/etc/mtab : 目前 mount 上來的 filesystems , 各位可使用 mount 這個指令來看看
這個檔的變化 . 如我在 mount 3.5 inch 軟碟A 前 , 我看到的 mtab
如下 :
/dev/hdb1 / ext2 rw 0 0
/dev/hda1 /mnt/dosc msdos rw 0 0
/dev/hda5 /mnt/dosd msdos rw 0 0
/dev/hda6 /mnt/dose msdos rw 0 0
none /proc proc rw 0 0
然而 , 當我以 mount -t msdos /dev/fd0H1440 /mnt/dosa 這個指令將
3.5 inch 軟碟A 掛上來後 , mtab 變為像下面的情況 :
/dev/hdb1 / ext2 rw 0 0
/dev/hda1 /mnt/dosc msdos rw 0 0
/dev/hda5 /mnt/dosd msdos rw 0 0
/dev/hda6 /mnt/dose msdos rw 0 0
none /proc proc rw 0 0
/dev/fd0H1440 /mnt/dosa msdos rw 0 0
所以 , 各位瞭解啦 ! /etc/mtab 就是記錄目前 mount 的 filesystem
/etc/mtools : 這裡面記錄的 , 是給 /usr/bin/mtools 參考用的 parameter .
那 mtools 是什麼呢? 簡而言之 , 就是一群操作 MSDOS 檔案的命令
集合 , 可用的命令可多了 , 如下 :
mattrib - change MSDOS file attribute flags
mcd - change MSDOS directory
mcopy - copy MSDOS files to/from Unix
mdel - delete an MSDOS file
mdir - display an MSDOS directory
mformat - add an MSDOS filesystem to a low-level formatted diskette
mlabel - make an MSDOS volume label
mmd - make an MSDOS subdirectory
mrd - remove an MSDOS subdirectory
mread - low level read (copy) an MSDOS file to Unix
mren - rename an existing MSDOS file
mtype - display contents of an MSDOS file
mwrite - low level write (copy) a Unix file to MSDOS
這些都被 link 到 mtools
/etc/named.boot : 假如你要建立 name server 的話 , 那這個檔就是你要修改的地方
詳細的情況可以去看 named 的 manual 就知道了 .
/etc/named.pid : named process id
/etc/networks : 這個檔與 hosts 有點像 , 都是在 boot 的時候會用到的東西 ,
在這裡可以定義一個子網路與其 IP address 的資訊 .
/etc/nntpserver : 這個檔案記錄著 news server , 當我們使用 tin -r ( read news
remotely ) 時, 這個檔案會被參考到, 或者若這個檔案不存在的
話, 那環境變數 NNTPSERVER 所指定的 server 就會被當成要去取
得 news 的 server. 譬如說, 你要將 140.111.1.11 當成 news
server, 那 /etc/nntpserver 中就可寫:
140.111.1.11
/etc/nologin : 你也許會感到奇怪 , 我的 /etc 這個 directory 下並沒有這個檔啊?
沒錯, 它平常是不存在的, 要是你看到這個檔的話, 那表示系統大概
要 shutdown 了, 因為系統要 shutdown 了, 自然不希望有人又
login 進來, 所以在我們執行 shutdown 時, nologin 這個檔會自動
的被 create, 裡面放著 shutdown message. 實際上, 當我們在
login 時, 系統會去檢查有沒有這個檔, 假如有的話, 那就會印出這
個檔案中的 message, 然後不讓你 login. nologin 也有可能是為了
某種理由被製造的, 比如說系統在 maintain 暫時不希望有人 login.
無論如何 nologin 若存在, 就不能 login
/etc/passwd : 呵呵 , 這個檔案可重要了 . 一個 system administrator 最初要學的
常常就是這個檔案的內容! 這個檔案記錄著系統可以認得的 user, 當
然啦, 也包括一些非人的 login name, 但這是有特殊用途的. 檔案內
容每列的格式如下:
Login Name:Encrypted Password:UID:GID:GCOS:Home Directory:Login Shell
(1)login name: 在 login name 方面 , 每個 login name 必須是唯一的 ,
而且不能超過 8 個字元, 一般說來, login name 雖然可以
大小寫混合, 但平常的情況下都用小寫. 順便一提的是
/usr/lib/aliases 這個檔案, 修改這個檔案的內容可以使
mail 時用超過 8 個字元的檔案. 如平常 mail
jhhsu@dorm10 .nctu.edu.tw 可變成 mail
. tw.
(2)Encrypted Password: 這欄是編碼過的密碼 , 在新增一個 new user 時
應該在這欄填上 * , 更改 password 可用 passwd
這個指令 . passwd 這是一個 setuid 的指令 ,
關於 setuid , setgid , stickybit , 各位可去
參考 Unix Security 方面的書籍 .
(3)UID: user id , 每個"人"都要不一樣 , 習慣上 , 100 以前被保留做為
特殊的 user id , 而 root 總是 0.
(4)GID: group id , 在比較早期的系統 , 一個 user 同時只能在一個 group
不過現在就沒有這種限制了 .
(5)GCOS: 這欄基本上沒有特殊格式限制 , 在這裡可以寫上你的 full name
家中電話, 住址等...... 愛寫什麼就寫什麼. 雖然你可以亂寫一
通, 但若你用到逗號, 系統會把它當成區間. 如你寫: Jin-Hwa
Sheu, NCTU, 80317, (02)1234123 這些都會被當成 Full Name,
Office, Home Phone. finger 這個指令會去讀這地方的資訊. 用
chfn 可改變這欄.
(6)Home Directory: 這欄沒什麼 , 就是記錄 user 的 home directory 而已
利用 cd 或 cd~ 都可回到 home directory .
(7)Login Shell: 設定使用者所使用的 shell , 預設值是 /bin/bash . 當
然 , 你也可以自己改成 csh 或 tcsh , zsh 也是不錯 ,
假如有 free 版的 korn Shell 也可拿來用用 . 用 chsh
可改變你的 login shell .
為了 security 方面的考量 , 各位可以安裝 shadow , 將 passwd 這個檔
完全的與一般 user 隔絕開來 , 連讀也沒有辦法讀 passwd 這個檔 .
/etc/profile : profile 這個檔是 bash 這個 shell 所用的 , profile 之於 bash
就好像 cshrc 之於 csh. 同樣的, /etc 下的 profile 也是 SA 在維
護的, 主要是放著全域的設定 ( Global Setting ) 而每個 user 在
自己的 Home Directory 都可以有各人的 .profile
/etc/protocols : 假如你為了某些目地 , 而寫了自己的 protocol , 那你就必須把
它列在這個檔案中 , 這樣 inetd 才會管理一些 daemons 去用它
這個檔案每列的格式如下 , 當然 , # 之後的是註解 :
Protolcol Name Portocol Number Aliases
ip 0 IP # internet protocol, pseudo protocol number
icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # internet group multicast protocol
ggp 3 GGP # gateway-gateway protocol
tcp 6 TCP # transmission control protocol
pup 12 PUP # PARC universal packet protocol
udp 17 UDP # user datagram protocol
idp 22 IDP # WhatsThis?
raw 255 RAW # RAW IP interface
/etc/psdatabase : 這個檔案是被 psupdate 所用到 , psupdate 主要的功能就是更新
/etc/psdatabase 這個檔 , 以符合目前的 kernel image system
map file . 一般的預設檔是 /usr/src/linux/tools/zSystem .
/etc/resolv.conf : 這裡面記載著你機器的 domain name 及 name server 的 IP
address , name server 可以自己加入 , 在交大可以用
140.113.1.1 或 140.113.17.5 , 這兩臺都是 name server .
name server 可不要隨便就去掉 , 否則 , 就會發生如下的情況 :
@Rebel[/etc]>telnet ccsun3.cc.nctu.edu.tw
ccsun3.cc.nctu.edu.tw: Host name lookup failure
因為沒有了 name server , 所以 ccsun3.cc.nctu.edu.tw
沒有辦法被解譯 , 故會有 Host name lookup failure
這段訊息 .
/etc/securetty : 假如你要以 root login 的話 , 實際上是有限制的 , 這個檔案就
列出了 root 可以 login 的 ttys , 假如你把每一列都 mark 起來
那就沒有任何一個 terminal 可供 root login 了 , 所以呢 ,
就會出現以下的情況 :
Rebel login: root
root login refused on this terminal.
再一次的 , 我們看到了 unix security 方面的東西 , 仔細的在這
個檔案列出可用的 terminal , 可使從 modem 連的使用者或經由網
路來的其它的使用者比較不容易取得 superuser 的權力 .
/etc/services :
/etc/shell : 這個檔案再簡單也不過了 , 裡面就記錄著可以用的 login shell . 還
有一點 , 那就是這個檔的記錄會在使用 chsh 時做為參考 , 唯有被列
在這裡的 shell , 使用 chsh 時才會出現這些 shell 可選 .
/etc/sudoers : 在一個不是很複雜的系統中 , 也許一個 System Administrator 就可
以管理所有的事情 . 但一但系統提供的服務變多 , 系統管理的工作
也隨之變得沉重 , 這時候 , sudo 就派上用場了 , sudo 可以讓一個
普通的 user 變成 superuser , 這樣一來 , 一個系統的某些工作 ,
就可以分配給這些 superusers 來做 . 以減輕負擔 .
當然 , 並不是每個 user 都可以變成 superuser . 所以
/etc/sudoers 就是記錄著那些人可以用 superuser 的身份來執行一
些工作 , 這個檔案的格式如下 :
host alias section format:
Host_Alias HOSTALIAS = host-list
Host_Alias ::= a keyword.
HOSTALIAS ::= an upper-case alias name.
host-list ::= a comma separated list of hosts.
command alias section format:
Cmnd_Alias CMNDALIAS = cmnd-list
Cmnd_Alias ::= a keyword.
CMNDALIAS ::= an upper-case alias name.
cmnd-list ::= a comma separated list commands.
user specification format:
user access_group [: access_group] ...
access_group ::= host_type = [op]cmnd_type [,[op]cmnd_type] ...
host_type ::= a lower-case host name OR a host alias.
cmnd_type ::= an command OR a command alias.
op ::= the logical '!' NOT operator.
如下面是一個極為簡單的例子 :
# Cmnd alias specification
Cmnd_Alias SHUTDOWN=/sbin/halt,/sbin/shutdown
# User specification
root ALL=ALL
jhhsu ALL=ALL
emotion ALL=ALL,!SHUTDOWN
在這個例子當中 , jhhsu 可以執行 root 所有的命令 , emotion 除了 halt
及 shutdown 不能執行以外 , 其它 root 能執行的命令他都能執行 .
這個檔案有一個專屬的 editor 叫 visudo 可來編輯 /etc/sudoer 這個檔案
在編輯完這個檔案之後 , jhhsu 就可以用 sudo.bin 這個命令轉換成
superuser 來做原來只有 superuser 才能做的事 . 而關於使用 sudo.bin
有一個記錄檔 , 在 /var/adm/sudo.log , 裡面記錄著誰在什麼時候利用
sudo 下了那些指令 . 順便一提的是 : 利用下面這個命令可抓出那些人轉換
成 superuser 但卻沒有成功 ......
grep "FAILED SU" /var/adm/messages/etc/utmp : 從 utmp 中可以
知道現在有誰正在用系統 . 當使用者 logout 之後 ,
init ( 很重要的 process , 以後有時間將為各位介紹 ) 就去把 logout
的使用者從 /etc/utmp 中去掉 .
實際上 , utmp 每個 record 是像這樣的一個結構 :
struct utmp {
short ut_type; /* type of login */
pid_t ut_pid; /* pid of process */
char ut_line[12]; /* devicename of tty -"/dev/" */
char ut_id[2]; /* init id or abbrev. ttyname */
time_t ut_time; /* logintime */
char ut_user[8]; /* username, not null-term */
char ut_host[16]; /* hostname for remote login */
long ut_addr; /* IP addr of remote host */
};
瞭解這個檔案 , 進而去修改 , 可以做出許多有趣的事 ......:P
/etc/wtmp : 簡而言之 , wtmp 是一個 login data base , 有許多的指令會用到這個
檔 , 像 last , sessreg , who 等 ......
這個檔案格式與 utmp 大致相同 , 只是多了 shutdown 及 reboot 這
個記錄 , 指出系統的 shutdown 或 reboot , 及一個空的 user name
指出在相關 terminal 的 logout . 還有 , 不像 /etc/utmp , /
/etc/wtmp 的記錄是慢慢的附加上去的 , 也就是說 , 這個檔案會越變
越大 , 雖然變大的速度並不會太快 , 但一但到了某種程度大小的話
System Administrator 應該要考慮砍掉部份 . 下面是用 last 這個
指令所得到的部份內容 :
bbs tty1 Tue Nov 29 19:09 - 19:09 (00:00)
root tty1 Tue Nov 29 19:08 - 19:09 (00:00)
root tty1 Tue Nov 29 19:07 - 19:07 (00:00)
runlevel ~ Tue Nov 29 19:07
reboot ~ Tue Nov 29 19:07
/etc/zprofile : link 到 /etc/profile
章中, 將為各位介紹 /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 交換的話, 那它就會被標示成 passive,
假如有做 routing information 的交換 ( 這臺機器上有 run routed )
, 那就會標示成 active net 或 host 這個關鍵字是指出 route 是到網
路或是到一臺特定的機器上. name1 就是目地網路或目地機器的名字.
這個名字可用 /etc/hosts 或是 /etc/networks 中的 symbolic host
name. name2 就是訊息將被送往之 gateway 的 name或 IP address.
/etc/group : 如同 /etc/passwd 列出了系統中所有的使用者名字 , /etc/group
定義系統中所有的 group name 與相關訊息 .
格式為: group_name:passwd:GID:user_list
如 : author::200:jhhsu,emotion,passion
上面的例子表示 jhhsu,emotion,passion 都是屬於 author 這個 group
通常 passwd 那欄是空白的 , 表示不用密碼 . 或放一個 * 號
以下也是一個典型的例子 :
root::0:root,jhhsu
bin::1:root,bin,daemon
daemon::2:root,bin,daemon
sys::3:root,bin,adm
adm::4:root,adm,daemon
tty::5:
disk::6:root,adm
lp::7:lp
mem::8:
kmem::9:
wheel::10:root,jhhsu
shadow::11:root
mail::12:mail
news::13:news
uucp::14:uucp
man::15:man
users::100:games
bbs:*:99:bbs,bbsuser,bbsroot
當然啦 ! 這個檔案只能為 superuser 所讀寫 , 一個 superuser 可使
用 groupadd , groupdel , groupmod 來管理 /etc/group 這個檔 ,
要手動管理也是可以 . 下面是這三個指令的用法 :
groupadd [ -g gid [ -o ] ] group_name
groupdel group_name
groupmod [ -g gid [ -o ] ] [ -n new_group_name ] group_name
/etc/hosts : 這個檔案記錄著 IP address 至 hostname 的 mapping . 如我們想把
ccsun21.csie.nctu.edu.tw 取個別名叫 : oldstock
那我們就可以在這個檔案裡寫如下的敘述 :
140.113.17.151 oldstock
如此一來 , 以後我們 telnet oldstock 就等於 telnet
140.113.17.151
在這個檔案中 , 至少會有兩列 , 一列為 loopback , 這是為了偵錯目的
而設的 , 另一列為 local host , 就是你自己的機器 .
/etc/hosts.equiv : 在裡面可以設定一些 remote machine , 而從這些 remote
machine 利用 rsh 或 rlogin 連回 local machine 的話
便不用輸入密碼
同樣的東西也可以在 .rhosts 見到 . 比如說在 ccsun22.csie
.nctu.edu.tw 上你的 Home Directory 建一個 .rhosts 檔 ,
裡面的內容如下:
rebel.dorm10.nctu.edu.tw jhhsu
以後只要在 rebel.dorm10.nctu.edu.tw 上利用 rsh 或 rlogin 至
ccsun22.csie.nctu.edu.tw 的話
, 也不須要輸入密碼
rsh -l jhhsu ccsun22.csie.nctu.edu.tw 不過這東西最好不要亂設 , 以信得過的 hosts 為主 ,
才不會造成 security 上的困擾 .
/etc/hosts.deny : 設定那些 remote hosts 不可以使用 inetd
/etc/hosts.allow : 設定那些 remote hosts 可以使用 inetd
至於 inetd 有那些 service , 各位可以去看看 /etc/inetd.conf
從裡面就可以很清楚的可以看得出來 .
假如你採取比較 close 作法的話 , 可以在 hosts.deny 中寫
ALL:ALL
但是如此一來 , 只要不是從 localhost 來的 , 那大概都不必
玩了 , 所以 , 我們也要適時的在 hosts.allow 中加入可以
access 的 hosts , 如 :
ALL:140.113.17. ALL:140.113.4.
ALL:140.113.6.
/etc/hosts.lpd : 記錄可 access printer 的 hosts . 假如一臺 printer可被網路上
的許多臺主機所共用, 那 printcap 這個檔案必須得描述完整的網
路設定資訊. 在比較嚴密控制的情況下, 有兩個條件必須符合首先,
local machine 必須在 remote machine 的 /etc/hosts.eqiuv 中,
或者, 在 remote machine 的 /etc/hosts.lpd 中被記載第二, 使
用者必須有 remote machine 的帳號.
/etc/inetd.pid : inetd process id
/etc/issue : 這個檔案被記錄著 login prompt 前所要 echo 的 message , 特別要注
意的是 /etc/rc.d/rc.S
下面的四行若沒有 mark , 則每次開機 issue 及 motd 都會被改變
假如你要有自己的設定 , 下面一定都要 mark 起來如下 :
#echo > /etc/issue
#echo Welcome to Linux /bin/uname -a | /bin/cut -d -f3. >> /etc/issue
#echo >> /etc/issue
#echo "/bin/uname -a | /bin/cut -d -f1,3. (Posix)." > /etc/motd
/etc/klogd.pid : klogd process id
/etc/ld.so.conf : 記錄一些 library 所在的目錄
/etc/magic : 初看這個檔案時 , 也許只能隱隱約約的看到 : 這個檔案似乎是描述一些
檔案的格式. 沒錯, 這個檔案記載了許多檔案格式的識別字串或方法那
這個檔在那裡會用的到呢? 各位有使用過 file 這個指令嗎? file 這個
指令的命令格式為:
file [ -c ] [ -z ] [ -L ] [ -f namefile ] [ -m magicfile ] file
file 這個指令非常有趣, 它可以告訴你某一個檔案的格式, 如它是一個
text 檔, 或是一個 shell script 或 DOS 可執行檔等...... 而 file
這個指令, 就是去參考 /etc/magic 這個資料庫. 假如你知道某一檔案
的識別字, 而原來 magic 這個資料庫沒有記錄, 那你可以把識別方法加
到資料庫中, 或乾脆建立自己的資料庫算了.
/etc/motd : 這個檔很簡單 , 就是 message of the day 的意思 , 裡面可以寫一些
message , 而這些 message 會在 login shell 之前被顯示出來 .
通常都是 system administrator 要告知 user 的一些訊息. 而關於每次
/etc/mtab : 目前 mount 上來的 filesystems , 各位可使用 mount 這個指令來看看
這個檔的變化 . 如我在 mount 3.5 inch 軟碟A 前 , 我看到的 mtab
如下 :
/dev/hdb1 / ext2 rw 0 0
/dev/hda1 /mnt/dosc msdos rw 0 0
/dev/hda5 /mnt/dosd msdos rw 0 0
/dev/hda6 /mnt/dose msdos rw 0 0
none /proc proc rw 0 0
然而 , 當我以 mount -t msdos /dev/fd0H1440 /mnt/dosa 這個指令將
3.5 inch 軟碟A 掛上來後 , mtab 變為像下面的情況 :
/dev/hdb1 / ext2 rw 0 0
/dev/hda1 /mnt/dosc msdos rw 0 0
/dev/hda5 /mnt/dosd msdos rw 0 0
/dev/hda6 /mnt/dose msdos rw 0 0
none /proc proc rw 0 0
/dev/fd0H1440 /mnt/dosa msdos rw 0 0
所以 , 各位瞭解啦 ! /etc/mtab 就是記錄目前 mount 的 filesystem
/etc/mtools : 這裡面記錄的 , 是給 /usr/bin/mtools 參考用的 parameter .
那 mtools 是什麼呢? 簡而言之 , 就是一群操作 MSDOS 檔案的命令
集合 , 可用的命令可多了 , 如下 :
mattrib - change MSDOS file attribute flags
mcd - change MSDOS directory
mcopy - copy MSDOS files to/from Unix
mdel - delete an MSDOS file
mdir - display an MSDOS directory
mformat - add an MSDOS filesystem to a low-level formatted diskette
mlabel - make an MSDOS volume label
mmd - make an MSDOS subdirectory
mrd - remove an MSDOS subdirectory
mread - low level read (copy) an MSDOS file to Unix
mren - rename an existing MSDOS file
mtype - display contents of an MSDOS file
mwrite - low level write (copy) a Unix file to MSDOS
這些都被 link 到 mtools
/etc/named.boot : 假如你要建立 name server 的話 , 那這個檔就是你要修改的地方
詳細的情況可以去看 named 的 manual 就知道了 .
/etc/named.pid : named process id
/etc/networks : 這個檔與 hosts 有點像 , 都是在 boot 的時候會用到的東西 ,
在這裡可以定義一個子網路與其 IP address 的資訊 .
/etc/nntpserver : 這個檔案記錄著 news server , 當我們使用 tin -r ( read news
remotely ) 時, 這個檔案會被參考到, 或者若這個檔案不存在的
話, 那環境變數 NNTPSERVER 所指定的 server 就會被當成要去取
得 news 的 server. 譬如說, 你要將 140.111.1.11 當成 news
server, 那 /etc/nntpserver 中就可寫:
140.111.1.11
/etc/nologin : 你也許會感到奇怪 , 我的 /etc 這個 directory 下並沒有這個檔啊?
沒錯, 它平常是不存在的, 要是你看到這個檔的話, 那表示系統大概
要 shutdown 了, 因為系統要 shutdown 了, 自然不希望有人又
login 進來, 所以在我們執行 shutdown 時, nologin 這個檔會自動
的被 create, 裡面放著 shutdown message. 實際上, 當我們在
login 時, 系統會去檢查有沒有這個檔, 假如有的話, 那就會印出這
個檔案中的 message, 然後不讓你 login. nologin 也有可能是為了
某種理由被製造的, 比如說系統在 maintain 暫時不希望有人 login.
無論如何 nologin 若存在, 就不能 login
/etc/passwd : 呵呵 , 這個檔案可重要了 . 一個 system administrator 最初要學的
常常就是這個檔案的內容! 這個檔案記錄著系統可以認得的 user, 當
然啦, 也包括一些非人的 login name, 但這是有特殊用途的. 檔案內
容每列的格式如下:
Login Name:Encrypted Password:UID:GID:GCOS:Home Directory:Login Shell
(1)login name: 在 login name 方面 , 每個 login name 必須是唯一的 ,
而且不能超過 8 個字元, 一般說來, login name 雖然可以
大小寫混合, 但平常的情況下都用小寫. 順便一提的是
/usr/lib/aliases 這個檔案, 修改這個檔案的內容可以使
mail 時用超過 8 個字元的檔案. 如平常 mail
jhhsu@dorm10 .nctu.edu.tw 可變成 mail
. tw.
(2)Encrypted Password: 這欄是編碼過的密碼 , 在新增一個 new user 時
應該在這欄填上 * , 更改 password 可用 passwd
這個指令 . passwd 這是一個 setuid 的指令 ,
關於 setuid , setgid , stickybit , 各位可去
參考 Unix Security 方面的書籍 .
(3)UID: user id , 每個"人"都要不一樣 , 習慣上 , 100 以前被保留做為
特殊的 user id , 而 root 總是 0.
(4)GID: group id , 在比較早期的系統 , 一個 user 同時只能在一個 group
不過現在就沒有這種限制了 .
(5)GCOS: 這欄基本上沒有特殊格式限制 , 在這裡可以寫上你的 full name
家中電話, 住址等...... 愛寫什麼就寫什麼. 雖然你可以亂寫一
通, 但若你用到逗號, 系統會把它當成區間. 如你寫: Jin-Hwa
Sheu, NCTU, 80317, (02)1234123 這些都會被當成 Full Name,
Office, Home Phone. finger 這個指令會去讀這地方的資訊. 用
chfn 可改變這欄.
(6)Home Directory: 這欄沒什麼 , 就是記錄 user 的 home directory 而已
利用 cd 或 cd~ 都可回到 home directory .
(7)Login Shell: 設定使用者所使用的 shell , 預設值是 /bin/bash . 當
然 , 你也可以自己改成 csh 或 tcsh , zsh 也是不錯 ,
假如有 free 版的 korn Shell 也可拿來用用 . 用 chsh
可改變你的 login shell .
為了 security 方面的考量 , 各位可以安裝 shadow , 將 passwd 這個檔
完全的與一般 user 隔絕開來 , 連讀也沒有辦法讀 passwd 這個檔 .
/etc/profile : profile 這個檔是 bash 這個 shell 所用的 , profile 之於 bash
就好像 cshrc 之於 csh. 同樣的, /etc 下的 profile 也是 SA 在維
護的, 主要是放著全域的設定 ( Global Setting ) 而每個 user 在
自己的 Home Directory 都可以有各人的 .profile
/etc/protocols : 假如你為了某些目地 , 而寫了自己的 protocol , 那你就必須把
它列在這個檔案中 , 這樣 inetd 才會管理一些 daemons 去用它
這個檔案每列的格式如下 , 當然 , # 之後的是註解 :
Protolcol Name Portocol Number Aliases
ip 0 IP # internet protocol, pseudo protocol number
icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # internet group multicast protocol
ggp 3 GGP # gateway-gateway protocol
tcp 6 TCP # transmission control protocol
pup 12 PUP # PARC universal packet protocol
udp 17 UDP # user datagram protocol
idp 22 IDP # WhatsThis?
raw 255 RAW # RAW IP interface
/etc/psdatabase : 這個檔案是被 psupdate 所用到 , psupdate 主要的功能就是更新
/etc/psdatabase 這個檔 , 以符合目前的 kernel image system
map file . 一般的預設檔是 /usr/src/linux/tools/zSystem .
/etc/resolv.conf : 這裡面記載著你機器的 domain name 及 name server 的 IP
address , name server 可以自己加入 , 在交大可以用
140.113.1.1 或 140.113.17.5 , 這兩臺都是 name server .
name server 可不要隨便就去掉 , 否則 , 就會發生如下的情況 :
@Rebel[/etc]>telnet ccsun3.cc.nctu.edu.tw
ccsun3.cc.nctu.edu.tw: Host name lookup failure
因為沒有了 name server , 所以 ccsun3.cc.nctu.edu.tw
沒有辦法被解譯 , 故會有 Host name lookup failure
這段訊息 .
/etc/securetty : 假如你要以 root login 的話 , 實際上是有限制的 , 這個檔案就
列出了 root 可以 login 的 ttys , 假如你把每一列都 mark 起來
那就沒有任何一個 terminal 可供 root login 了 , 所以呢 ,
就會出現以下的情況 :
Rebel login: root
root login refused on this terminal.
再一次的 , 我們看到了 unix security 方面的東西 , 仔細的在這
個檔案列出可用的 terminal , 可使從 modem 連的使用者或經由網
路來的其它的使用者比較不容易取得 superuser 的權力 .
/etc/services :
/etc/shell : 這個檔案再簡單也不過了 , 裡面就記錄著可以用的 login shell . 還
有一點 , 那就是這個檔的記錄會在使用 chsh 時做為參考 , 唯有被列
在這裡的 shell , 使用 chsh 時才會出現這些 shell 可選 .
/etc/sudoers : 在一個不是很複雜的系統中 , 也許一個 System Administrator 就可
以管理所有的事情 . 但一但系統提供的服務變多 , 系統管理的工作
也隨之變得沉重 , 這時候 , sudo 就派上用場了 , sudo 可以讓一個
普通的 user 變成 superuser , 這樣一來 , 一個系統的某些工作 ,
就可以分配給這些 superusers 來做 . 以減輕負擔 .
當然 , 並不是每個 user 都可以變成 superuser . 所以
/etc/sudoers 就是記錄著那些人可以用 superuser 的身份來執行一
些工作 , 這個檔案的格式如下 :
host alias section format:
Host_Alias HOSTALIAS = host-list
Host_Alias ::= a keyword.
HOSTALIAS ::= an upper-case alias name.
host-list ::= a comma separated list of hosts.
command alias section format:
Cmnd_Alias CMNDALIAS = cmnd-list
Cmnd_Alias ::= a keyword.
CMNDALIAS ::= an upper-case alias name.
cmnd-list ::= a comma separated list commands.
user specification format:
user access_group [: access_group] ...
access_group ::= host_type = [op]cmnd_type [,[op]cmnd_type] ...
host_type ::= a lower-case host name OR a host alias.
cmnd_type ::= an command OR a command alias.
op ::= the logical '!' NOT operator.
如下面是一個極為簡單的例子 :
# Cmnd alias specification
Cmnd_Alias SHUTDOWN=/sbin/halt,/sbin/shutdown
# User specification
root ALL=ALL
jhhsu ALL=ALL
emotion ALL=ALL,!SHUTDOWN
在這個例子當中 , jhhsu 可以執行 root 所有的命令 , emotion 除了 halt
及 shutdown 不能執行以外 , 其它 root 能執行的命令他都能執行 .
這個檔案有一個專屬的 editor 叫 visudo 可來編輯 /etc/sudoer 這個檔案
在編輯完這個檔案之後 , jhhsu 就可以用 sudo.bin 這個命令轉換成
superuser 來做原來只有 superuser 才能做的事 . 而關於使用 sudo.bin
有一個記錄檔 , 在 /var/adm/sudo.log , 裡面記錄著誰在什麼時候利用
sudo 下了那些指令 . 順便一提的是 : 利用下面這個命令可抓出那些人轉換
成 superuser 但卻沒有成功 ......
grep "FAILED SU" /var/adm/messages/etc/utmp : 從 utmp 中可以
知道現在有誰正在用系統 . 當使用者 logout 之後 ,
init ( 很重要的 process , 以後有時間將為各位介紹 ) 就去把 logout
的使用者從 /etc/utmp 中去掉 .
實際上 , utmp 每個 record 是像這樣的一個結構 :
struct utmp {
short ut_type; /* type of login */
pid_t ut_pid; /* pid of process */
char ut_line[12]; /* devicename of tty -"/dev/" */
char ut_id[2]; /* init id or abbrev. ttyname */
time_t ut_time; /* logintime */
char ut_user[8]; /* username, not null-term */
char ut_host[16]; /* hostname for remote login */
long ut_addr; /* IP addr of remote host */
};
瞭解這個檔案 , 進而去修改 , 可以做出許多有趣的事 ......:P
/etc/wtmp : 簡而言之 , wtmp 是一個 login data base , 有許多的指令會用到這個
檔 , 像 last , sessreg , who 等 ......
這個檔案格式與 utmp 大致相同 , 只是多了 shutdown 及 reboot 這
個記錄 , 指出系統的 shutdown 或 reboot , 及一個空的 user name
指出在相關 terminal 的 logout . 還有 , 不像 /etc/utmp , /
/etc/wtmp 的記錄是慢慢的附加上去的 , 也就是說 , 這個檔案會越變
越大 , 雖然變大的速度並不會太快 , 但一但到了某種程度大小的話
System Administrator 應該要考慮砍掉部份 . 下面是用 last 這個
指令所得到的部份內容 :
bbs tty1 Tue Nov 29 19:09 - 19:09 (00:00)
root tty1 Tue Nov 29 19:08 - 19:09 (00:00)
root tty1 Tue Nov 29 19:07 - 19:07 (00:00)
runlevel ~ Tue Nov 29 19:07
reboot ~ Tue Nov 29 19:07
/etc/zprofile : link 到 /etc/profile
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-947863/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux檔案系統詳解Linux
- Linux 檔案系統詳解Linux
- Windows系統檔案詳解(轉)Windows
- linux系統管理命令詳解(轉)Linux
- 【Linux/etc/profile檔案詳解 】Linux
- linux proc 檔案系統下 entry 的解釋(轉)Linux
- 詳解Linux中/etc/passwd檔案Linux
- 檔案管理命令詳解(轉)
- 檔案管理系統 (轉)
- Linux下/etc/fstab檔案使用(轉)Linux
- Linux下NFS網路檔案系統設定及管理(轉)LinuxNFS
- 詳解 Linux 中的虛擬檔案系統Linux
- Linux 系統下解壓 rar 檔案Linux
- <解說linux下proc檔案系統>Linux
- Linux 建立檔案系統及掛載檔案系統詳解一薦Linux
- Linux 系統配置檔案詳細解讀Linux
- Linux etc目錄配置檔案詳解Linux
- Linux 系統管理(下)(轉)Linux
- Linux 下的檔案管理&管理系統中的輸出輸入Linux
- 檔案系統(五):exFAT 檔案系統原理詳解
- Solaris 檔案系統管理(轉)
- Linux下加掛檔案系統的小結(轉)Linux
- 詳解Linux 2.6核心新檔案系統變化機制(轉)Linux
- WINDOWS系統檔案詳解Windows
- /etc/fstab檔案詳解
- Linux檔案系統 (轉)Linux
- 裝置檔案系統教程(轉)
- Linux作業系統檔案管理器的共享(轉)Linux作業系統
- linux教程:管理/var/spool/clientmqueue/下的大檔案LinuxclientMQ
- 細說GNU/Linux系統的檔案及檔案系統(轉)Linux
- linux環境下使用XFS檔案系統(轉)Linux
- Linux系統檢視檔案地址常用的命令詳解!Linux
- Linux系統常見檔案大小常用的命令詳解!Linux
- Linux系統中的/etc/shadow檔案超詳細內容解析Linux
- 系統管理命令中文詳解(轉)
- linux檔案系統及目錄結構詳解_轉摘chinaunixLinux
- linux下燒錄任何檔案系統格式的光碟(轉)Linux
- Linux下檔案系統的比較和選擇(轉)Linux