twbsd.org
 
  Select Language: Home  SmbFTPD Forum 

书籍数据

ch00 序.htm

ch01 FreeBSD 简介.htm

ch02 安装 FreeBSD.htm

ch03 UNIX 系统入门.htm

ch04 使用者管理.htm

ch05 网络设定.htm

ch06 档案系统管理.htm

ch07 系统安全.htm

ch08 编译核心.htm

ch09 系统调校.htm

ch10 软件安装.htm

ch11 X Window 的使用.htm

ch12 NAT 及防火墙.htm

ch13 网页服务器.htm

ch14 网页服务器进阶应用.htm

ch15 FTP 服务器.htm

ch16 邮件服务器.htm

ch17 邮件服务器进阶应用.htm

ch18 DHCP服务器.htm

ch19 数据库系统.htm

ch20 Samba 网络芳邻.htm

ch21 NFS.htm

ch22 DNS 服务器.htm

ch23 指令应用.htm

ch24 Shell Script.htm

cha1 附录A etc目录下的档案介绍.htm

cha2 附录B 制作 FreeBSD 安装光盘.htm

cha3 附录C 版权宣告.htm

 


View printable page

第七章 /etc 目录下的档案介绍

附录 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

A.22 login.access:控制使用者登入权限

用来设定登入系统使用者的权限,我们可以在这里设定是否允许使用者从 console 登入、从不同区域登入的权限等。

当某个使用者登入后,会先依本档中的设定来控制使用者的登入来源。这里所使用的规则是由上往下比对,先符合者优先,也就是 first match wins,来决定该使用者可以登入或是被拒绝。它的格式是以 ":" 分割成三个字段:

permission : users : origins
  • 第一个字段应该是 "+" (可以登入) 或 "-" (拒绝登入) 的其中之一。
  • 第二个字段是一个或多个登入的名称、群组名称或是 ALL(永远符合)。
  • 第三个字段是一个或多个 tty 的名称清单(非网络登入用)、主机名称、所属网域(开头是 "." 的)、主机地址、因特网编号(结尾是 "." 的)、或是本地的机器 (任何没有包含 "." 的字符串)。如果你有跑 NIS,你可以使用@netgroupname在主机或是使用者的格式中。

我们也可以使用 EXCEPT 的运算符号写出非常简洁的规则。群组的设定只有在使用者名称不符合规则时才会被用到,而且这个程序并不会去查使用者主要的群组是什么。

A.23 login.conf:控制使用者可以使用的系统资源

这个档案用来控制不同账号可以使用的系统资源,它会依照使用者在密码文件中的 login class 来寻找相对应的 class 设定,如果没有分类则使用 default 的默认值。请参考「使用者管理」一章中的说明。

A.24 mail.rc:设定 mail 指令参数

用来设定 mail 的参数。当 mail 指令执行时,它会先读 /usr/share/misc/mail.rc/usr/local/etc/mail.rc/etc/mail.rc,最后再读使用者的 ~/mailrc 这个档。请 man mail,您不必动到这个档。

A.25 make.conf:设定 make 的参数

当我们在重新编译 FreeBSD 内附的程序时 (例如使用 port 安装软件时),我们所使用的指令 make 会读取 /etc/make.conf 来取得一些编译时的参数。它可以让你在 make 时覆盖一些设定而不必去修改 source tree。make.conf档案一定要使用有效的 Makefile 语法。一般而言,我们会修改一些关于下载档案的 FTP 站台设定,以从 port 安装软件而言,当下达 make install 指令时,make 会去抓一些必要的档案,如果要去国外抓的话实在太慢了,所以我们会将 FTP 站台设定为离我最近或最快的站台。只要在 make.conf 中最下方加入下列设定即可:

# 当使用 port 安装软件时,优先使用中央大学资工系及交大资工的 FTP
MASTER_SITE_BACKUP?=    \
	ftp://freebsd.csie.ncu.edu.tw/FreeBSD/ports/distfiles/${DIST_SUBDIR}/ \
	ftp://freebsd.csie.nctu.edu.tw/pub/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=	${MASTER_SITE_BACKUP}

A.26 manpath.config:设定 man 文件所在位置

设定 man 指令的参数,如 man 的文件所在等。

A.27 master.passwd:使用者密码文件

FreeBSD 使用 shadow password 的方式来保护密码文件,只有 root 才可以读取编码后的密码文件 /etc/master.passwd,而一般使用者只能看到 passwd 文件中的数据。但是这并不是系统用来验证的档案,为了加快速度,FreeBSD 将该文件做成数据库 /etc/spwd.db/etc/pwd.db, 因此在修改完 master.passwd 后,必须使用指令 pwd_mkdb 来将 master.passwd 做成数据库档案。不过一般而言,我会使用 vipw 这个指令来修改 master.passwdvipw 会先将 master.passwd 以预设的文书编辑软件打开,修改完存盘后,它会视需要自动更新数据库。

它的格式是:

name:password:UID:GID:class:change:expire:fullname:home:shell
  • name:使用者账号名称,也就是您 login 时所需输入的名字。使用者名称长度最长可以是 16 个字符,但如果您要使用 NIS,则最多只可以使用8个字符。每个使用者名称不可重复。而且使用者名称中只能包英文字、减号 "-"、底线 "_"、及数字,而且最好不要使用大写的英文字,而开头的第一个字也不可以是减号 "-"。在 master.passwd 这个档案中,每个字段都不可以使用冒号 ":",因为冒号是用来分割字段的特殊符号。
  • password:可以是空的,代表不用密码就可以登入,这样很危险;也可以是 *,表示不可以登入;上面 vipw 显示出来的项目中,以使用者 root 而言,他的密码是使用 MD5 编码过的,特征是开头为 $1 且看起来比较长;而使用者 tom 的密码是使用 DES 编码过的,DES 会将密码编成一串13个字符的符号。
  • UID:使用者代号,每个使用者都不一样,不可重复,如果有多个账号使用同样的 UID,FreeBSD 会将它当成同一个账号。编号从 0 到 65535。UID 0 为系统中超级使用者的代号,内定只有 root 和 toor 的 UID 为 0。toor 账号是 bash 所建立的使用者,内定不能使用该使用者登入。
  • GID:群组代号,编号从 0 到 65535。
  • class:除了群组外,class是更有弹性的控制方法,可以针对 /etc/login.conf 中不同的使用者设定来调整每个使用者的可使用的资源设定。
  • change:强迫使用者变更密码的时间,以从1970年到所要变更日期所经过的秒数来表示。你可以使用 date +%s 来求出从1970年到现在时间所经过的秒数,每天为86400秒,以现在时间的秒数加上86400*天数即为你要设定的时间。你可以使用指令下列指令来取得30天后的秒数,再将其填入即可。若设为0则表示不使用此功能:
# expr `date +%s` + 86400 \* 30
  • expire:账号的有效日期,一样是以从1970年到到期日所经过的秒数来代表。若设为0则表示不使用此功能。
  • fullname:使用者全名,你可以在此键入真实姓名。请注意这个字段也不可以使用冒号哦。
  • home:使用者的家目录,即使用者登入后的所在目录。
  • shell:使用者的 shell。如果使用 /sbin/nologin 表示该名使用者不可以登入。

A.28 motd:使用者登入后讯息

系统登入后,会自动秀出一段文字,称为 Message Of The Day(motd)。这一段文字是可以修改的,你可以编辑 /etc/motd 来制作自己的画面。如果您不希望 motd 内容出现 FreeBSD 的版本信息,您可以在 rc.conf 中加入下面内容:

update_motd="YES"

如此一来,下次您更新 motd 的内容时,系统就不会自动将版本信息加入 motd 中。

A.29 namedb/:DNS 服务器设定档

如果你有架 Name Server 的话,你必须设定该目录下的档案。详细说明请参考「DNS服务器」一章的说明。

A.30 netstart:启动网络服务的程序

这个档案并不会被其它程序所使用,它只是让你在单人模式下执行,用以启动网络。而多人模式的网络设定在于 /etc/rc.network。

A.31 networks:设定本地网络信息

用来设定本地网络的信息,我们通常不会需要修改这个档案。

A.32 newsyslog.conf:设定定期压缩备份文件

这个档主要用来定期检查 /var/log/ 的档案,设定当 log 到一定大小或是定期的将旧的档案压缩备份,并删除太老旧的档案。 除了 log 外,您也可以用它来设定定时要压缩备份的档案。

语法:

logfilename [owner:group] mode count size when [ZB] [/pid_file] [sig_num]
字段 说明
logfilename log 档名称
[owner:group] log 档拥有人:群组
mode 该 log 文件的权限(档案属性)
count 最多计算到多少,例如 cron 是 3 表示将有四个压缩档:cron.0.gz, cron.1.gz, cron.2.gz, cron.3.gz。
size 档案最大到多少即压缩备份,以 KB 计。
when 什么时候做备份,请 man newsyslog 来看详细说明。以 @ 为首代表用 ISO 8601 结构的时间格式。以 $ 为首代表使用每天、每周、每月。
一些例子:
$D0 每天半夜十二点
$D23 每天 23:00 时
$W0D23 每周日 23:00
$W5D16 每周五 16:00
$MLD0 每月最后一天半夜十二点
$M5D6 每月第五天 6:00
[ZB] Z 表示要将该档以 gzip 压缩起来,B 表示该档是 binary 档。
[/pid_file] pid 文件的绝对路径,如果有设定,则会送出 sig_num 给该程序。
[sig_num] 要送给该 daemon 程的 signal number,预设是 SIGHUP。

A.33 nsmb.conf:设定 smbfs 信息

我们可以在 FreeBSD 中使用 mount_smbfs 来挂入 Windows 网络芳邻中所分享出来的共享数据夹。而 nsmb.conf 就是执行 mount_smbfs 所使用的设定档。我们可以设定所要使用的 codepage、使用者名称及密码等,请 man nsmb.conf 以取得相关的设定说明。

A.34 nsswitch.conf:设定 nsswich 信息

FreeBSD 中有所谓 name-server switch,用来控制名称信息转换,例如,当系统要取得 password、group、host 等信息时,会参考这个档案以决定要从哪里得到信息。请 man nsswitch.conf 以取得相关的设定说明。

A.35 opiekeys:OPIE 设定档

FreeBSD 内建一种密码验证的方法 OPIE (One Time Password In Everything),就是一种只能使用一次的密码。而 opiekeys 这个档案是用来存放使用 OPIE 的使用者设定。您可以 man opieman opiepasswd 以取得更多信息。

A.36 pam.d:PAM 设定档

PAM 是 Pluggable Authentication Module 的缩写。它是 FreeBSD 内建的一种极富弹性的认证机制,您可以参考这个网页来取得更多关于 PAM 的信息:http://www.freebsd.org/doc/en_US.ISO8859-1/articles/pam/;或者如果您安装时有安装 FreeBSD 文件,您也可以在下列目录找到关于 PAM 的说明:

# ls /usr/share/doc/en_US.ISO8859-1/articles/pam

A.37 passwd:不含密码的使用者信息文件

FreeBSD 使用 shadow password 的方式来保护密码文件,只有 root 才可以读取编码后的密码文件 /etc/master.passwd,而一般使用者只能看到 passwd 文件中的数据。但是这并不是系统用来验证的档案,为了加快速度,FreeBSD 将该文件做成数据库 /etc/spwd.db/etc/pwd.db, 因此在修改完 master.passwd 后,必须使用指令 pwd_mkdb 来将 master.passwd 做成数据库档案。不过一般而言,我会使用 vipw 这个指令来修改 master.passwd,vipw 会先将 master.passwd 以预设的文书编辑软件打开,修改完存盘后,它会视需要自动更新数据库。你不需要改 passwd 的内容,只要改 master.passwd 即可。详细说明请参考 man master.passwd 的说明。

A.38 pccard_ether:启用及停用 PCCARD 网络设备

本文件用以启动或停用 PCCARD 网络设备的执行文件。

A.39 periodic/daily:包含每天会定时执行的工作

设定每天要执行一次的程序。该目录下放的是 shell script,如果你想自行增加的话,只需在该目录下编辑新的 shell script 并将权限设为可执行即可,或者编辑 /etc/daily.local,加入想要执行的指令。在 /etc/defaults/periodic.conf 中定义了定期执行的设定,以下即为 daily 选项每个档案所执行的动作:

档案 动作 预设执行
100.clean-disks 清理磁盘,要清除的档案类型可以在 periodic.conf 中设定。
110.clean-tmps 清除 /tmp。
120.clean-preserve 删除 /var/preserve 中它旧的档案。
130.clean-msgs 清除旧的系统讯息。
140.clean-rwho 清除 /var/rwho 中的旧资料。
150.clean-hoststat 清除 /var/spool/.hoststat。
200.backup-passwd 备份 /etc/master.passwd 及 /etc/group 并比对是否有更动。
210.backup-aliases 备份 /etc/mail/aliases。
300.calendar 执行 calendar -a。
310.accounting 移转 /var/account/ 的档案。
330.news 执行 /etc/news.expire。
400.status-disks 执行 df 及 dump -W。
405.status-ata-raid 检查 ATA Raid 的状态。
420.status-network 执行 netstat -i。
430.status-rwho 执行 uptime。
440.status-mailq 执行 mailq。
450.status-security 执行 /etc/security。
460.status-mail-rejects 统计/var/log/maillog 中记录拒绝的信件数量。
470.status-named 统计 DNS 拒绝记录。
500.queuerun 手动执行 mail queue。
999.local 执行 /etc/daily.local 中使用者自行定义的指令。  

A.40 periodic/weekly:包含每周会定时执行的工作

设定每周要执行一次的程序。该目录下放的是 shell script,如果你想自行增加的话,只需在该目录下编辑新的 shell script 并将权限设为可执行即可。在 /etc/defaults/periodic.conf 中定义了定期执行的设定,以下为每周会执行的工作:

档案 动作 预设执行
120.clean_kvmdb 清除过期的 /var/db/kvm_*.db。
310.locate 执行 /usr/libexec/locate.updatedb。
320.whatis 执行 /usr/libexec/makewhatis.local。
330.catman 执行 /usr/libexec/catman.local。
340.noid 找出没有拥有人或群组的档案。
400.status_pkg 使用 pkg_version(1) 找出老旧的 package。
999.local 执行其它在 /etc/weekly.local 中使用者自行定义的指令。  

A.41 periodic/monthly:包含每月会定时执行的工作

设定每月要执行一次的程序。该目录下放的是 shell script,如果你想自行增加的话,只需在该目录下编辑新的 shell script 并将权限设为可执行即可。在 /etc/defaults/periodic.conf 中定义了定期执行的设定,以下为每月为执行的档案:

档案 动作 预设执行
200.accounting 执行 ac 指令,统计使用者登入时间。
999.local 执行其它 /etc/monthly.local 使用者自行定义的指令。  

A.42 periodic/security:包含每天会执行的安全检查工作

periodic/security 中存放着每天会执行的 security check 档案,这些档案执行与否,同样定义在 /etc/defaults/periodic.conf 中,以下为每日会执行的档案:

档案 动作 预设执行
100.setchksetuid 检查是否有新增的 setuid 程序。
200.chkmounts 检查挂入磁盘的改变。
300.chkuid0 列出所有 uid 为 0 的使用者。
400.passwdless 列出没有密码的使用者。
500.ipfwdenied 列出 ipfw 所拒绝的联机。
510.ipfdenied 列出 ipf 所拒绝的联机。
550.ipfwlimit 列出 ipfw log 中,超出限制的相同记录。
600.ip6fwdenied 列出 ip6fw 所拒绝的联机。
650.ip6fwlimit 列出 ip6fw log 中,超出限制的相同记录。
700.kernelmsg 列出 dmesg 的内容。
800.loginfail 列出登入失败的信息。
900.tcpwrap 列出 TCP Wrap 所拒绝的联机。

A.43 phones:远程主机电话数据库

用来设定远程主机电话的数据库,以供指令 tip 使用,详情请 man tip

A.44 ppp/:PPP 相关设定档

设定 ppp 及 pppd 的设定档。请参考「网络设定」一章中的 ADSL 及 modem 的设定。

A.45 printcap:列表机设定档

这个档案定义了列表机的设定,请参考 man lptcontrol

A.46 profile:Shell 设定档

这个档案是当你使用 bash 为 shell 时,进入 shell 会读取的设定。就像 tcsh 所使用的 csh.cshrc 一样。

A.47 rc:开机时会执行的档案

当系统开机时,kernel 会先去加载 /sbin/init ,然后 /sbin/init 会去执行 /etc/rc ,而 rc 会去执行 /etc/rc.d/*etc/rc.* 的档案。几乎所有的设定都在 rc.conf 中,所以你只要去修改 rc.conf 就好了。

A.48 rc.d:所有开机时可能执行的服务

这个目录下存放了所有开机时会自动执行的程序,这些程序会依我们在 rc.conf 中的设定决定需不需要被执行。

A.49 rc.firewall:防火墙设定档

这个档案是作防火墙的设定。你可以在该档中加入你想要的设定,不过前提是你的系统已经准备好防火墙的相关设定了。详情请参考防火墙设定一章的说明。

A.50 rc.local:使用者自行设定开机要执行的工作

这个档案是让你设定开机要执行的程序。你可以在该文件中加入启动程序的指令,如果 rc.local 不存在,请自行新增。你也可以在 /etc/rc.d 的目录中,放在你一开机想要执行的 shell script,并将权限改为可执行。

A.51 rc.*:其它开机时的相关执行档

/etc/ 的其它 rc.* 的档案,如 rc.i386、rc.network 等,你不必去更动它们。一般而言,你想做的设定都可以在 /etc/rc.conf 中达成。如果你想要知道更多它们的信息,请 man rc

A.52 resolv.conf:DNS 主机及网域设定

设定你 DNS 查询的主机顺序。例如下列范例中,我们设定我们的 domain 为 mydomain.com ,而 nameserver 的后面加上的 IP 就是 DNS Server 的地址。

domain  mydomain.com
nameserver      61.64.127.1
nameserver      168.95.1.1

A.53 services:定义网络服务的端口号

这个档案定义了每个网络服务所使用的 port 及名称。

A.54 shells:定义合法的 shell

这个档案定义了使用者可以使用的 shell。只要是可以使用的 shell 都要在该档案中加入。有些程序为去检查使用者所使用的 shell 是否在 shells 中,例如 FTP 就不允许非使用 shells 中定义的 shell 的使用者登入。

A.55 ssh:SSH 相关设定及金钥

这个目录存放了 SSH daemon 所使用的金钥及设定档。

A.56 sysctl.conf:开机时会执行的 sysctl 内容

这个档案的内容会在开机时被 sysctl 这个指令所执行,用来对系统进行一些参数的调校,请参考「系统调校」一章的说明。

A.57 syslog.conf:定义系统记录文件位置及规则

这个档案定义了系统记录文件所储存的位置及记录的规则。

A.58 ttys:各种终端机权限设定

定义 tty 的形式及某些 tty 允不允许 root 登入。例入 root 就不能从 ttyp* 登入。有的 tty 后面有加 secure, 表示 root 可以从该 tty 登入。

 

Top Ths file was last modified: 2005 December 27 07:32:58.

Copyright © 2002-2024 Alex Wang from www.twbsd.org. All rights reserved.