查看文章
 
[电子书]FreeBSD6架设管理与应用(附录1.1)
2007年04月25日 11:11

附录 A /etc 目录下的档案介绍

/etc 是 FreeBSD 系统主要设定文件所在,了解这个目录下的档案及其格式,对于我们管理及使用 FreeBSD 将有更深入的认识。因此,以下我们就分别说明一下这些档案。

一个个读这些设定档的说明也许有点枯燥,因此,我们将这个章节放在附录中,您可以在有需要时再来参考即可。

A.1 aliases:设定邮件收件者别名

/etc/aliases 是用以告知 sendmail 要将信转给哪个使用者或是交由哪个程序处理。请注意,修改完这个档案后,必须使用指令 newaliases 来让所做的修改在 sendmail 中发生作用。这个档案是用来设定邮件的别名,也就是可以设定要将某人的信件转给其它地方(人员或程序)。你也可以将某人的信转给很多人,这个档案的位置是由 sendmail.cf 档案中的 AliasFile 这个选项所决定的。当 sendmail 收到信时,会一行一行比对,当第一行符合后,就不会再继续下去,所以应注意优先级。

本档案的语法开头的 "#" 代表该行是批注,大小写都视为一样。以下为几个设定的范例:

  1. root: alex
  2. webmanager: alex,jack,jim@other.hostname.com
  3. nobody: /dev/null
  4. homework: |/usr/local/bin/homework.sh
  5. olduser: :include: /usr/local/olduser_list
  • 范例 1 是将寄给 root 的信转给本机中的使用者 alex。
  • 范例 2 是将寄给 webmanager 的信转给本地的使用者 alex,jack及别地的 jim@other.hostname.com。
  • 范例 3 是将寄给 nobody 的信直接丢掉,丢入 /dev/null 这个无底深渊,也就是所有给 nobody 的信都直接删除。
  • 范例 4 是将寄给 homework 的信交给 /usr/local/bin/homework.sh 这支程序处理。
  • 范例 5 是将寄给 olduser 的信转给档案 /usr/local/olduser_list中所列出的所有使用者。olduser_list 为使用者清单的文字文件。

当设定了一堆复杂的别名之后,我们要看最后信会寄到哪里时,可以使用下面指令来看寄给 username 的信最后寄给谁:

# sendmail -bv username

aliases 档中将很多东西都转向 root,因此你可以去读 root 的信箱或是将 root 的信转给别的地方,下面这一行是将 root 的信都转给 my@my.domain:

root: me@my.domain

当邮件无法送出被退回时给使用者时,都是以 MAILER-DEAMON 为账号寄出。因为使用者可能会回复那封被退回的信,所以这个别名是必备的。而 postmaster 则负责处理所有关于邮件问题的信件,因此也是必备的,一定要保留下面二行,这是必要的系统基本设定:

MAILER-DAEMON: postmaster
postmaster: root

在修改完 /etc/aliases 之后,我们必须执行下列指令来更新数据:

# newaliases

A.2 crontab:设定定时执行工作

在 UNIX 系统中,有一个背景程序会定时执行一些工作,系统管理者可以修改这个档案以设定定期执行的工作。/etc/crontab 可以让管理者设定要以什么使用者的身份去执行定时工作,而一般使用者如果要设定定时执行工作时,可以使用指令 crontab -e 来编辑自己的定时执行工作。

以下为 /etc/crontab 的内容说明:

# 设定使用的 shell, 路径
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
# 设定执行指令时的目录
HOME=/var/log
# 当指令有输出数据时,要将输出的东西寄给谁。
MAILTO=""
#
# 分 小时 天 月 星期几 身份 指令
#minute hour mday month wday who command
#
*/5 * * * * root /usr/libexec/atrun
  • minute:代表一小时内的第几分,范围 0-59。
  • hour:代表一天中的第几小时,范围 0-23。
  • mday:代表一个月中的第几天,范围 1-31。
  • month:代表一年中第几个月,范围 1-12。
  • wday:代表星期几,范围 0-7 (0及7都是星期天)。
  • who:要使用什么身份执行该指令,当您使用 crontab -e 时,不必加此字段。
  • command:所要执行的指令。

小时的字段中如果是 *,表示每小时,天的字段中如果是 *,表示每天,依此类推。字段中也可以使用 "-" 来表示范围。例如,在小时的字段中填 8-11,表示执行的时间是 8,9,10,11,共四次。

字段中也可以用逗点来表示,以分的字段而言, 1,2,5,9 表示将在 1,2,5,9 分时各执行一次。我们也可以写成像这样 1-2,12-14 ,表示在 1,2,12,13,14 分各执行一次。

另外,也可以用 / 后面加数字表示每几分钟要执行一次。如在分的字段填 0-23/2,表示 1-22 分之间,每隔二分钟执行一次,也就是 0,2,4,6,8,10,12,14,16,18,20,22。如果在分的字段是 */5,表示每五分钟一次。

除此之外,也可以用一个开头为 @ 的字符串来表示各种意义:

字符串 代表意义
@reboot 开机时跑一次。
@yearly 每年跑一次,等于 "0 0 1 1 *"。
@annually 和 @yearly 一样。
@monthly 每月跑一次,等于 "0 0 1 * *",也就是每月一日半夜 12 点执行。
@weekly 每周跑一次,等于 "0 0 * * 0",也就是每个周日半夜 12 点执行。
@daily 每天跑一次,等于 "0 0 * * *",也就是每天半夜 12 点执行。
@midnight 和 @daily 一样。
@hourly 每小时跑一次,等于 "0 * * * *"。

另外,我们还可以在档案中以「key = value」的方式设定在执行指令时的环境变量。例如,一般指令有输出执行结果时,会自动寄给 root,我们也可以设定「MAILTO = ""」表示不要将输出结果寄出。以下为几个时间设定的范例:

# 分 小时 天 月 星期几 身份 指令
#minute hour mday month wday who command
#
# 设定每 5 分钟执行一次atrun。
*/5 * * * * root /usr/libexec/atrun

# 设定每天一点零一分时执行 /bin/check
1 1 * * * root /bin/check

# 设定每周一 3:11 分执行 week_check
11 3 * * 1 root /usr/local/week_check

# 设定每天一点及四点的零到二十三分中间,每二分钟执行一次 something。
0-23/2 1,4 * * root /bin/something

一般使用者的 crontab 会放在 /var/cron/tabs 目录中,所以如果要备份或升级时,应该要注意这些档案是否要备份。

小提示

我们在安排 crontab 时,应该要错开每个程序的执行时间,才不会有一大堆程序同时执行,造成系统负荷过高。

A.3 csh.cshrc:Tcsh 使用者登入后的 shell 环境设定

这是给 Shell csh、tcsh 用的内定 .cshrc 档案,也就是进入该 Shell 时会加载的设定。所有使用 csh 及 tcsh 的使用者登入后,系统都会自动加载这个档案中的设定,若使用者自己的家目录中的 .cshrccsh.cshrc 有相同的设定,则会以使用者家目录中的 .cshrc 为主。

# 档案权限设定
umask 022

# 设定内定使用的文字编辑器为 ee
setenv   EDITOR   ee

# 设定当使用者打 ls 时,出来的结果是 ls -F 的结果
alias    ls       ls -F

# 设定当使用者打 cd.. 时,变成是打 cd ..
alias cd.. 'cd ..'

# 设定命令提示符号为 "主机名称 [所在目录] -使用者名称->"
set prompt = "%B%m [%/] -%n-> "

这个档案除了使用者登入时会加载外,如果使用者以 tcsh 或 csh 写 shell scripts,在执行时也会加载这个档案中的设定。

A.4 csh.login:Tcsh 使用者登入后的 shell 环境设定

这是给 csh、tcsh 用的内定 .login 档案,使用者登入 shell 时会自动加载本档中的设定。和 csh.cshrc 不同的时,这个档案只有在使用者登入时才会加载,而执行 shell scripts 时不会使用这个档。如果使用者家目录中的 .login 设定和 csh.login 相冲突时,将以使用者家目录中的 .login 设定为主。

# 要读取系统讯息则将下面一行的 # 拿掉
# msgs -f

# 允许终端机讯息,设为 y 才可以使用 write 的指令,
# 传送讯息给其它使用者
# mesg y

# 设定支持中文的终端机
setenv ENABLE_STARTUP_LOCALE zh_TW.Big5
setenv LC_CTYPE is_IS.ISO_8859-1
setenv LANG zh_TW.Big5

# 登入时显示 FreeBSD Tip
[ -x /usr/games/fortune ] && /usr/games/fortune freebsd-tips

A.5 csh.logout:Tcsh 使用者注销时会执行的设定

这是给 Shell csh、tcsh 用的内定 .login 档案,也就是离开该 Shell 时会执行这个档案中的指令。在离开 Shell 时,Shell 会载入 /etc/csh.logout~/.logout 的设定。请 man csh

A.6 defaults/periodic.conf:预设定时执行项目设定

这个档定义了 /etc/periodic 目录下哪些程序要定期执行。我们可以新增并编辑 /etc/periodic.conf/etc/periodic.conf.local 来覆盖这个档案的设定。您可以 man periodic.conf 来得到更多的信息。

A.7 defaults/rc.conf:预设的系统设定文件

系统开机时会读取这个设定档以决定应该执行哪些工作,例如网络设定、该执行哪些系统服务等。 /etc/defaults 目录下的 rc.conf 中所有设定都是默认值,如果我们要修改,请新增 /etc/rc.conf 来加入你的设定,这样在日后升级时我们的设定才不会覆盖。如果 /etc/defaults/rc.conf 中的设定和 /etc/rc.conf 重复时,会以 /etc/rc.conf 为主。另外,当我们执行 sysinstall 后所做的设定,也会被写入 /etc/rc.conf 中。建议您可以读一下 rc.conf 看看我们有哪些可以设定的项目。

rc.conf 有很多设定,例如网络卡 IP、hostname、firewall、要启动什么系统服务等,几乎所有的系统设定都放在这个档案中。FreeBSD 在开机时,会读取 /etc/rc.conf 以决定要不要启动某些服务,而当我们从 ports 中安装程序时,通常安装完后,我们也要设定这个文件才能让该程序在开机时执行。例如,安装完 SNMP 时,我们要在 /etc/rc.conf 中加入「snmpd_enable="YES"」,这样一来 SNMP 才会在开机时启动。

A.8 fbtab:设定使用者登入时对系统装置的存取权限

fbtab 用来设定使用者登入对于系统装置的存取权限。大多数的人都是使用虚拟的终端机,我们登入系统时所使用的 tty 是虚拟的终端机 ttyv0、ttyv1 等,FreeBSD 将这些系统装置视为档案,放在 /dev/ 中。例如,console 就是 /dev/console 这个档,但该档的拥有者是 root,而有的应用程序用要求使用 /dev/console 的存取权限,fbtab 这个档案是用来定义当你从虚拟的终端机登入时,能自动取得某个装置的权限。详细说明请 man fbtab

A.9 fstab:档案系统的加载设定

这个档案用来定义开机时要挂入的档案分割区及各分割区的参数设定,例如,要挂入哪一个目录中、挂入时的参数、备份时是否要备份等。

# 装置名称 挂入点        档案系统 参数   Dump Pass#
/dev/ad0s1b none   swap sw   0 0
/dev/ad0s1a /   ufs rw   1 1
/dev/ad1s1f /home   ufs rw   2 2
/dev/ad0s1e /usr   ufs rw   2 2
/dev/ad1s1e /var   ufs rw   2 2
/dev/acd0c /cdrom   cd9660 ro,noauto 0 0
proc   /proc   procfs rw   0
  • Device:装置名称,就是要挂入的来源,最常用的是 /dev/ 的档案,我们说过FreeBSD 将装置视为档案,所以这里填的是 /dev/*。装置也可以是NFS或是其它的虚拟装置,如 proc,linpro 等。
  • Mountpoint:挂入点,就是你要将来源挂到什么地方,其中 swap 没有挂入点,所以是 none。
  • FStype:档案系统就是要挂入的类型,必须在 kernel 中有定义。一般 FreeBSD 的档案是 ufs,硬盘要挂入的设定就是 ufs。如果是 cdrom 就是 cd9660。
    档案系统格式 说明
    ufs 本地的 UNIX 档案系统。
    ext2fs Linux EXT2 档案格式。
    msdos FAT/FAT32,DOS 兼容的档案系统。
    ntfs Windows 的 NTFS。
    cd9660 CD-ROM 的档案系统。
    udf DVD 数据光盘格式。
    nfs 和 Sun Microsystems 相容的 "Network File System"。
    smbfs CIFS/SMB 档案格式,也就是 Windows 的网络芳邻,请参考 Samba 网络芳邻一章。
    mfs 本地的 memory-based UNIX 档案系统。
    swap 用来作 swapping 的档案系统。
    procfs 用来存取执行程序(process)的档案系统。
    kernfs 用来存取核心参数(kernel parameter)的档案系统。
  • Options:参数依各装置而有所不同,如果开机时不挂入的话(如 cdrom),就必须加入参数 noauto。defaults 设定为 rw、dev、exec、auto、nouser、async。可用的参数如下,加上no 则为相反,如 nouser、noauto:
    参数 说明
    rw 可读可写。
    ro 只可读不可写。
    async 所有数据以异步方式完成。
    atime 每次存取动作都更新档案时间。
    auto 能被 mount -a 自动挂入系统。
    dev 解译档案系统特性与储存装置规格。
    exec 允许档案系统中的二进制元文件被执行。
    user 允许一般user 挂入。
    sync 所有数据以同步方式完成。
    sw swap。
    noauto 开机时不挂入。
    userquota 使用者磁盘配额限制 (须 kernel 支持 quota)。
    groupquota 群组磁盘配额限制 (须 kernel 支持 quota)。
  • dump:表示使用指令 dump 时要备份的档案系统,0表示不要,1表示要。
  • pass:这个字段是给指令 fsck 用的,是检查的顺序。/ 的数字应该是1而其它的档案系统为2。不需检查的就是0(如 cdrom,swap 等)。

A.10 ftpusers:设定哪些使用者不可以使用 FTP 登入

这个档案用来定义哪些使用者不可以使用 FTP 登入,只要将使用者登入的账号加入这个档案中,该使用者就不能使用 FTP 登入系统了。例如,我们要让使用者 tom 无法使用 FTP 来登入系统,只要在 fupusers 档案开头加入该使用者名称。ftpusers 中也可以加入群组名称,如果您不希望某个群组的使用者使用 FTP 登入,只要在该档案中加入 @groupname 即可。开头为 "@" 表示该行的设定为群组名称。

# $FreeBSD: src/etc/ftpusers,v 1.6 1999/08/27 23:23:41 peter Exp $
#
# list of users disallowed any ftp access.
# read by ftpd(8).
@noftp
tom
root
toor
daemon
operator
bin
tty
kmem
games
news
man
bind
uucp
xten
pop
nobody

A.11 ftpchroot:设定哪些使用者登入后要限制根目录

FreeBSD 内附的 FTP daemon 还有一个重要的功能,就是可以让使用者登入后,只看得到自己的家目录。如果在 ftpchroot 这个档案中有该使用者名称或以 "@" 为开头的群组名称,使用者登入后,根目录就会是自己的家目录,而无法切换目录到非家目录的其它系统目录中。我们也可以设定将某个使用者或群组设定登入后只能在某一个固定的目录中,详细设定请参考「FTP 服务器」一章的说明。

A.12 gettytab:终端机模式设定文件

这个档案是终端机模式设定文件。在启动终端机时 (例如,使用者登入系统时),系统会读取这个档案中关于终端机的设定值。例如,我们可以修改这个档案以设定使用者登入前的提示讯息。以下为该档案 default 的部份:

# im= 就是别人连上你的机器时会看到的字符串,其中 \r\n 表示换行
# 其中的%s %m %h %t 分别对应到 FreeBSD i386 alexwang.com ttyp0,
# 如果你不想显示 FreeBSD ,就把 %s 拿掉。最后一行 if=/etc/issue
# 就是表如果没有 issue 这个档的话,就执行 default。
default:\
:cb:ce:ck:lc:fd#1000:im=\r\n%s/%m (%h) (%t)\r\n\r\n:sp#1200:\
:if=/etc/issue:

A.13 group:使用者群组设定档

这个档案记录了系统中的使用者群组设定。详细说明请参考「使用者管理」一章。我们要注意的是每一个群组的编号 (gid) 不可以重复。另外,在 FreeBSD 中,如果使用者要具有 su 成 root 的权限,必须将该使用者加入 wheel 群组中。例如,我们要让使用者 alex 可以 su 成 root 的权限,则在 group 档中 wheel 群组后面加上 alex:

wheel:*:0:root,alex
daemon:*:1:
kmem:*:2:
sys:*:3:

A.14 host.conf:设定 DNS 查询顺序

这个档案用来设定 DNS 查询的顺序。预设的查询顺序是先查询 hosts 这个档,再由 bind 向 DNS Server 查询。如果有 NIS 的话,还要再加入 nis 那一行。

# $FreeBSD: src/etc/host.conf,v 1.6 1999/08/27 23:23:41 peter Exp $
# First try the /etc/hosts file
hosts
# Now try the nameserver next.
bind
# If you have YP/NIS configured, uncomment the next line
# nis

A.15 hosts:定义常用的机器名称对映

我们可以将常用的机器名称及 IP 对映写在这个档案中,以节省向 DNS Server 查询的时间。如果你的主机有多个 domain name,将你最喜欢的放在最前面,这样寄信时才会出现该 domain name。

在设定时,档案中最少要有 localhost 和自己的 domain name。hosts 的格式如下:

IP 地址 正式的主机名称 别名

别名的用意在于,使用时可以用比较简单的名称来联机到该机器。例如,我们设定了 bbs.ba.mgt.ncu.edu.tw 的别名为 bbs,则在使用 telnet、ssh、ping 等指令时,我们只要输入 bbs 做为主机名称即可,不必输入其 IP 或是一长串的正式主机名称。以下为设定范例:

127.0.0.1                localhost.com localhost
192.168.0.1              mydomain.com mydomain
192.168.0.1              mydomain.com.
192.168.0.2              mail.mydomain.com mail
140.115.83.240           bbs.mgt.ncu.edu.tw bbs.mgt
140.115.75.5             bbs.ba.mgt.ncu.edu.tw bbs

A.16 hosts.allow:设定允许或拒绝联机的主机

设定允许或拒绝使用本机服务、联机的主机来源。例如你可以在这里加入拒绝某台计算机使用 telnet、ssh、ftp 等联机到你的机器。在「系统安全」一章详细的说明了如何使用这个档案来让我们的主机更安全

A.17 hosts.equiv:设定远程信任主机及使用者

设定远程信任主机及使用者,这个档案主要是给一些 "r" 系列的服务用,例如 rcp、rlogin、rsh 等。详细说明请 man hosts.equiv

A.18 hosts.lpd:设定可以使用本地列表机的主机

我们可以将 FreeBSD 设定成 LPR 网络列表机,而这个档案是用来设定可以使用本地列表机的主机,只要加入主机名称或 IP 即可。

A.19 inetd.conf:各项 inetd 服务设定档

inetd 是 UNIX 系统中用来掌管许多服务的重要 daemon,我们可以修改这个档来设定 inetd 所要提供的服务。它的格式如下:

#ftp stream tcp nowait   root     /usr/libexec/ftpd        ftpd -l
#ftp stream tcp6 nowait   root     /usr/libexec/ftpd        ftpd -l
#ssh stream tcp nowait   root     /usr/sbin/sshd           sshd -i -4
#ssh stream tcp6 nowait   root     /usr/sbin/sshd           sshd -i -6
telnet stream tcp nowait   root     /usr/libexec/telnetd     telnetd
#telnet stream tcp6 nowait   root     /usr/libexec/telnetd     telnetd
    

第一个字段是服务的名称,要和 /etc/services 搭配设定。如果要开放某一项服务,只要将开头的 # 符号移除即可。我们一般可以在这个档案中设定的常用服务有 telnet、ftp、pop3等。当修改这个档后,必须重跑 inetd 才会生效。

# kill -1 `cat /var/run/inetd.pid`

A.20 localtime:记录所在时区设定

这个文件记载你所在的时区数据,你可以经由 sysinstall 来设定时区。该程序会自动将 /usr/share/zoneinfo 中合适的档案复制一份成为 /etc/localtime

A.21 locate.rc:快速搜寻档案的名称数据库设定

FreeBSD 会自动依这档案的内容来建立硬盘中文件名称数据库,以利我们快速搜寻文件名称。详细的说明请 man updatedbman locate

>>回到总目录


类别:Freebsd||添加到搜藏 |分享到i贴吧|浏览(359)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu