在 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.edu.tw:/usr /tmp
将 server 端的 /usr 挂到 client 端的 /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/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
Jin-Hwa-Sheu@dorm10.nctu.edu. 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
就?