在 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