找回密码
 注册
搜索
热搜: 回贴
微赢网络技术论坛 门户 服务器 Linux/BSD 查看内容

linux中etc目录下的文件介绍

2009-12-20 13:53| 发布者: admin| 查看: 135| 评论: 0|原作者: 回梦游仙

在 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 /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 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





最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 21:27 , Processed in 0.336635 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部