`
isiqi
  • 浏览: 16466150 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

/etc 下档案的详细说明

阅读更多

序言 :

在 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

这个档案的格式如下 :

<net | host> name1 gateway name2 metric value <passive | active | external>

当 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. <-- 只要从 140.113.17.X 都可以 access

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/issue时已提出过,记得 mark 起来就好.

/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

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

就好像 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 可不要随便就去掉 , 否则 , 就会发生如下的情况 :

<jhhsu>@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/rpc :

/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

转自:CCCA 资工86 许景华

分享到:
评论

相关推荐

    qidian.rar_../../../etc/passwd_../../etc/passwd_../etc/passwd_/e

    ../../../etc/passwd_../../etc/passwd_../etc/passwd_/e"揭示了几个关键点,首先是"qidian.rar",这是一个RAR格式的压缩文件,RAR是一种流行的文件压缩格式,用于存储多个文件和文件夹在单个档案中。接下来的路径...

    一篇非常好的linux学习笔记分享(Linux入门绝佳).pdf

    9. /etc/host.conf:文件说明用户的系统如何查询节点名。 10. /etc/hosts:设定用户自已的IP与名字的对应表的文件。 11. /etc/hosts.allow:设置允许使用inetd的机器使用的文件。 12. /etc/hosts.deny:设置不...

    Linux目录结构

    以下是/etc目录下的重要子目录及其功能: - **/etc/X11**:X Window系统的配置文件。 - **/etc/alternatives**:用于处理多个可选命令实现的情况。 - **/etc/apm**:高级电源管理配置文件。 - **/etc/init.d**:...

    绝版etc解包打包工具

    虽然描述中并未详细说明其具体功能和操作步骤,但根据一般的解包打包工具,我们可以推断它应该具备的基本功能和使用场景。用户在使用时应遵循安全原则,熟悉工具的使用方法,以便最大化发挥其价值。

    超实用Linux下命令行.doc

    Linux 系统中有很多实用的命令行技巧,以下是对这些技巧的详细说明: 1. 创建多级目录的文件夹:mkdir -p ws/src/scripts 使用 mkdir 命令创建多级目录,-p 选项可以创建父目录。 2.完整的呈现档案的修改时间:ls...

    西北工业大学-操作系统实验报告-实验二.doc

    * Distinfo:说明安装所需要的档案及其 MD5 的检查数据。 * pkg-comment:简单的软件描述。 * pkg-descr:较详细的描述。 * pkg-plist:列出软件将安装的清单。 用户可以使用 make search 指令来搜索软件的目录位置...

    CentOS下tar打包解压详解(解压到指定文件夹)

    - 范例四说明了如何仅从压缩文件中提取特定文件,如`/etc/passwd`。 - 范例五强调了使用`-p`参数保留文件原有属性的重要性。 - 范例六展示了如何只备份比特定日期(如2005年6月1日)更新的文件。 - 范例七提到了...

    linux.chm文档

    tar -cvf archive.tar file1 file2 dir1 创建一个包含了 'file1', 'file2' 以及 'dir1'的档案文件 tar -tf archive.tar 显示一个包中的内容 tar -xvf archive.tar 释放一个包 tar -xvf archive.tar -C /tmp 将...

    Linux指令大全(非常实用的Linux命令)

    #### 档案目录管理 - **cat**:此命令用于连接文件并打印或重定向内容。它是一个非常基础且强大的工具,广泛应用于查看文件内容、合并文件等场景。 - 使用权限:所有用户 - 常用选项: - `-n` 或 `--number`:...

    Linux命令大全

    - **/etc**:存放了系统的配置文件,用于调整服务和系统设置。 - **/home**:用户主目录所在的位置,每个用户的个人文件和目录都放在这里。 - **/lib**:存放系统最基本的动态链接共享库,对系统运行至关重要。 - **...

    在suse下安装mysql5.1.49 .

    在SUSE Linux下安装MySQL 5.1.49是一个涉及多个步骤的详细过程,本文将根据提供的描述、标签和部分内容,深入解析如何在SUSE系统上安装并配置MySQL数据库服务器版本5.1.49。 ### 步骤一:检查系统是否已安装MySQL ...

    Python实现配置文件备份的方法

    `tar` 是Linux下的一个实用工具,可以将多个文件或目录打包成一个档案文件(即.tar文件),并可选择性地进行压缩。 - `tar_command` 变量构建了执行 `tar` 命令的字符串,`-c` 参数表示创建新的归档文件,`-z` 表示...

    ezhttp mysql-5.7.11.tar.gz

    描述中同样写着"ezhttp mysql-5.7.11.tar.gz",这意味着提供的信息仅限于文件名,没有额外的上下文或详细说明。不过,我们可以基于MySQL 5.7.11这个版本号来探讨一些相关知识点。 MySQL是世界上最流行的开源关系型...

    FreeBSD 下的UNIX系统入门

    以下是对标题和描述中所述知识点的详细说明: 1. **登录与注销系统**: - 登录:在启动FreeBSD后,屏幕上会出现`login:`提示,输入`root`账户名即可登录。`root`是系统管理员账户,拥有所有权限。 - 密码设置:...

    Linux操作系统基础教程

    一.Linux下的网络服务.......................................................................................................24 二.几种重要的配置文件......................................................

    2005详细介绍Linux从入门到精通

    1.2.3 Initscript档案 1.3 其他新特性 1.3.1 视窗管理性能的提高 1.3.2 新的编译技术egcs 1.3.3 替代xv的新工具 2 开始之前 2.1 取得说明书 2.2 取得正确的Red Hat Linux部件 2.2.1 盒装Red Hat Linux清单 ...

    用友u8使用技巧窍门整理汇编.docx

    以下是对标题和描述中涉及的一些关键知识点的详细说明: 1. **操作人员权限设置**: 在系统管理中,通过“权限”-&gt;“用户”来添加新的操作人员,并设置他们的权限。每个用户的ID和用户名必须唯一。接着在“权限”-...

    任松林的linux初学教程

    ”——说明了该教程适合初学者,并且内容丰富,图文并茂。 **知识点详细解析:** ##### 第一章:安装Linux - **规划**:在安装Linux之前需要进行合理的规划,包括选择合适的Linux发行版、确定硬件需求等。 - **...

    debian参考手册——中文版

    - **sudo配置**:通过配置`/etc/sudoers`文件,可以允许某些用户无需成为root即可执行特定的命令。 - **动手时间**:实践是学习Linux的最佳方式,可以尝试自己安装软件、修改配置等操作。 **1.2 类Unix文件系统** ...

Global site tag (gtag.js) - Google Analytics