FreeBSD 4.7 RELEASE i386 发行公告(2002 年 10 月 10 日)
FreeBSD 项目
版权所有 © 2000、2001、2002, FreeBSD 文档项目所有
FreeBSD 4.7-RELEASE 的发行说明总结了自 4.6-RELEASE 以来对 FreeBSD 基本系统所做的变更。包括内核和用户空间的变更,以及自上次发行以来发布的基本系统相关的安全公告。同时,还简要介绍了一些升级的注意事项。
1 简介
本文档包含针对 FreeBSD 4.7-RELEASE 在 IA-32 硬件平台上的发行说明。内容包括自 4.6-RELEASE 以来新增(或变更)的 FreeBSD 功能,还提供了一些关于从之前版本升级的说明。
FreeBSD 4.7-RELEASE 的发行版本可以通过 ftp://ftp.FreeBSD.org/ 或其任何镜像站点获取。有关获取此版本(或其他版本)的更多信息,请参阅 《FreeBSD 手册》 中的 “获取 FreeBSD” 附录。
2 新特性
本节介绍了自 4.6-RELEASE 以来 FreeBSD 中最为明显的新功能或已变更的功能。发行说明中的典型条目包括新驱动程序或硬件支持、新命令或选项、主要错误修复以及外部软件升级。此外,还列出了 4.6-RELEASE 发布后针对基本系统发布的安全公告。
2.1 内核变更
acct(2) 被修改为以追加模式打开记账文件,以便可以使用 accton(8) 启用对仅追加文件的记账。
新增了 RLIMIT_VMEM 支持。此功能定义了一个新的资源限制,覆盖进程的整个虚拟内存空间,包括 mmap(2) 空间。此限制可通过 login.conf(5) 中的新变量 vmemoryuse
配置。
修复了 sendfile(2) 系统调用中的一个错误,该错误会导致头部计入要发送文件的大小。
新增设备驱动程序 ucom(4) ,用于支持 USB 调制解调器、串口设备及其他需要仿真为 tty 的程序。相关的驱动程序 uplcom(4) 和 uvscom(4) 分别为 Prolific PL-2303 串行适配器和 SUNTAC Slipper U VS-10U 提供支持。
新增了用于通过 USB 连接 Handspring Visor 的 uvisor(4) 驱动程序。
2.1.1 处理器/主板支持
新增对 AMD Élan SC520 的支持;需在内核配置文件中新增选项 CPU_ELAN
。
2.1.2 引导加载程序
2.1.3 网络接口支持
em(4) 驱动程序现在支持 Intel 82545EM 和 82545EB 芯片,并且新增了 VLAN 支持。
rp(4) 驱动程序已更新至版本 3.02,现在可以作为模块构建。
2.1.4 网络协议
新增了 ipfw(4) 的新版(通常称为“IPFW2”)作为一个选项。它在内核中采用了类似 bpf(4) 指令的可变大小规则表示法。尽管大部分外部可见的行为(如通过 ipfw(8))保持不变,ipfw(8) 现在支持匹配字段之间的逻辑或连接操作。此新版本默认未启用。如需使用:
在内核配置中新增
options IPFW2
(尚未记录)。编译并安装带有
-DIPFW2
选项的 libalias 和 ipfw(8)。
新增了 netgraph 节点类型 ng_l2tp(4) ,它实现了 RFC 2661 中描述的 L2TP 协议的封装层。
tcp(4) 协议的重传计时器现在可以通过两个 sysctl 变量(net.inet.tcp.rexmit_min
和 net.inet.tcp.rexmit_slop
)进行调整。
tcp(4) 协议现在能够动态限制发送端窗口,以最大化带宽并最小化往返时间。该功能可通过 sysctl net.inet.tcp.inflight_enable
启用。
2.1.5 磁盘和存储
新增驱动程序 ahd(4),用于支持 Adaptec AIC7901、AIC7901A 和 AIC7902 Ultra320 PCI-X SCSI 控制器芯片。
修复了一个可能导致 ata(4) 标记队列无法正常工作的错误。
驱动程序 ata(4) 现在能够正确计算最大传输大小,从而修复了访问某些 ATA 设备时发生的许多 READ_BIG
和其他错误。
驱动程序 ata(4) 现在支持 Sil 0680 和 VIA 8233/8235 控制器。
新增驱动程序 mpt,用于支持 LSI Logic Fusion/MP 架构光纤通道控制器。
新增驱动程序 pst,用于支持 Promise SuperTrak ATA RAID 控制器。
2.1.6 文件系统
2.1.7 PCCARD 支持
2.1.8 多媒体支持
VT8233 音频控制器现在拥有自己的驱动程序,以支持所有已知的硬件修订版。可以通过在内核配置中新增 device pcm
;或在 /boot/loader.conf
中新增 snd_via8233="YES"
在启动时可加载此驱动程序。相关文档由 VIA 提供支持。
ich 声卡驱动程序现在提供基本的 ich4 音频支持。
新增了用于 USB 音频设备的 uaudio 驱动程序。
2.1.9 第三方软件
IPFilter 已更新至版本 3.4.29。
2.2 安全公告
最初修复安全公告 SA-02:23(解决了 set-user-id 或 set-group-id 程序使用文件描述符的问题)时存在错误。对于使用 procfs(5) 或 linprocfs(5) 的系统,仍可能被利用。此错误已修正,修订版的安全公告 FreeBSD-SA-02:23 提供了更多细节。
修复了解析器中的缓冲区溢出漏洞,该漏洞可能被恶意域名服务器或伪造 DNS 消息的攻击者利用。详情请参阅安全公告 FreeBSD-SA-02:28。
修复了 tcpdump(1) 中的缓冲区溢出漏洞,该漏洞可能因格式错误的 NFS 数据包触发。详情请参阅安全公告 FreeBSD-SA-02:29。
ktrace(1) 不再允许跟踪先前具有特权的进程操作,从而防止了该进程在放弃特权之前可能获取的敏感信息泄露。有关此问题的讨论,请参阅安全公告 FreeBSD-SA-02:30。
修复了 pppd(8) 中的竞争条件漏洞,该漏洞可能被用来变更任意文件的权限。更多信息请参阅安全公告 FreeBSD-SA-02:32。
通过升级 OpenSSL,修复了其多个缓冲区溢出漏洞。更多详情请参阅安全公告 FreeBSD-SA-02:33。
修复了 XDR 解码器中的堆缓冲区溢出漏洞。更多信息请参阅安全公告 FreeBSD-SA-02:34。
修复了一个允许本地用户读取和写入 FFS 文件系统任意块的漏洞。更多信息请参阅安全公告 FreeBSD-SA-02:35。
修复了 NFS 服务器代码中的一个漏洞,该漏洞可能允许远程拒绝服务攻击。安全公告 FreeBSD-SA-02:36 提供了更多细节。
修复了一个可能允许本地用户通过 kqueue(2) 机制使系统崩溃的漏洞。更多信息请参阅安全公告 FreeBSD-SA-02:37。
修复了系统调用中的几个边界检查错误,这些错误可能导致部分系统调用返回大量内核内存。更多信息请参阅安全公告 FreeBSD-SA-02:38。
修复了一个可能导致使用 libkvm 的应用程序泄露敏感文件描述符的漏洞。详情请参阅安全公告 FreeBSD-SA-02:39。
2.3 用户态的变更
biff(1) 现在接受一个 b
参数,用于启用新邮件的“响铃通知”(不会影响终端内容显示,区别于 biff y)。
cp(1) 现新增一个(非标准)-n
选项,当需要覆盖文件时自动回答“否”。
新增程序 daemon(8) ,它是 daemon(3) 的命令行接口。它会从控制终端分离,并执行命令行指定的程序,从而允许用户将任意程序作为守护进程运行。
dump(8) 新增了 -S
参数,仅打印备份大小估算值并退出。
finger(1) 现在支持 .pubkey
文件。
finger(1) 增加了 -g
选项,仅显示用户全名的 GECOS 信息。
finger(1) 支持 -4
和 -6
选项,用于为远程查询指定地址族。
fold(1) 现在支持 -b
选项按字节位置断行,以及 -s
选项按单词边界断行。
ftp(1) 新增了 epsv4
命令,在使用 IPv4 时切换到 EPSV/EPRT 和传统 PASV/PORT 请求之间。此命令解决了运行 ftp(1) 时因 IPFilter 或其他防火墙不支持新 FTP 请求而导致的问题。
ftpd(8) 增加了 -m
选项,允许访客用户修改现有文件(如果文件系统权限允许)。这特别支持访客用户恢复上传。
ftpd(8) 增加了 -M
选项,阻止访客用户创建目录。
ftpd(8) 增加了 -W
选项,禁用将 FTP 会话记录到 wtmp(5)。
ifconfig(8) 增加了 eui64
命令,自动填充 IPv6 地址的低 64 位,使得 prefix(8) 变得多余。
ifconfig(8) 现在可以通过参数 promisc
设置接口的混杂模式。
inetd(8) 现在能够限制单个 IP 地址的最大服务同时调用数。
lock(1) 现在接受 -v
参数,用于在终端被锁定时禁用切换虚拟终端(VTY)。这允许通过单个终端锁定整个控制台。
ls(1) 程序新增了 -m
选项以跨页显示文件,-p
选项强制在目录后新增 /
,以及 -x
选项以跨页对文件名排序。
mv(1) 现新增(非标准)-n
选项,当需要覆盖文件时自动回答“否”。
nice(1) 现在使用 -n
参数指定运行程序的“优先级”。
od(1) 现在支持 -A
选项指定输入地址基,-N
选项指定转储字节数,-j
选项指定跳过字节数,-s
选项输出有符号十进制短整型,以及 -t
选项指定输出类型。
pam_opie(8) 在指定变量 no_fake_prompts
时,不再生成伪挑战。
新增模块 pam_opieaccess(8) 。
pam_radius(8)、pam_ssh(8) 和 pam_tacplus(8) 已与 2002 年 7 月 3 日的 FreeBSD -CURRENT 版本同步。
pam_unix(8) 已与 2002 年 3 月 9 日的 FreeBSD -CURRENT 版本同步(pre-OpenPAM)。
pwd(1) 现在支持 -L
选项,以打印逻辑当前工作目录。
renice(8) 命令实现了 -n
选项,用于指定对进程优先级的增量。
sed(1) 现在支持 -i
选项,实现文件的就地编辑。
sh(1) 现在支持 -C
选项,可以防止通过输出重定向覆盖已有的普通文件,并支持 -u
选项,在扩展未设置的变量时触发错误。
sh(1) 的内置 cd
命令现在支持 -L
和 -P
参数,分别用于调用逻辑模式或物理模式。默认使用逻辑模式,但可以通过 sh(1)
的物理选项变更默认设置。
sh(1) 的内置 jobs
命令现在支持 -s
参数,仅输出进程 ID(PID),以及 -l
参数,将 PID 新增到输出中。
sh(1) 的内置 export
和 readonly
命令现在支持 -p
参数,以“可移植”格式打印其输出。
sh(1) 不再接受诸如 command & && command
、&& command
或 || command
的无效构造。
split(1) 现在支持 -a
选项,用于指定拆分文件后缀使用的字母数量。
su(1) 现在支持 Kerberos V 认证。
tr(1) 现在基本支持对具有此功能的区域设置的等价类(equivalence classes)。
unexpand(1) 现在支持 -t
选项,用于指定制表符间距,类似于 expand(1)。
vidcontrol(1) 现在接受 -S
选项,允许用户禁用虚拟终端(VTY)切换。
who(1) 增加了一些新选项:-H
显示列标题;-T
显示 mesg(1) 状态;-m
等同于 am i
;-u
显示空闲时间;-q
按列显示用户名称。
xargs(1) 现在支持 -I replstr
选项,允许用户将从标准输入读取的数据插入到命令行参数的特定位置,而不是末尾。(FreeBSD 专用的 -J
选项功能类似,但已被更便携的 -I
选项取代。)
xargs(1) 现在支持 -L
选项,强制在处理一定数量的行后调用其实用程序参数。
2.3.1 第三方软件
BIND 已更新至 8.3.3。
Binutils 已更新至 2.12.1(具体为 2002 年 7 月 20 日的发布后快照版本)。
gcc 已更新为 2002 年 3 月 20 日 GCC 2.95 CVS 分支的快照版本,非官方版本号为 2.95.4。
Heimdal Kerberos 已更新为 2002 年 8 月 29 日的 pre-0.5 快照版本。
libpcap 已更新至 0.7.1。
已引入来自 NetBSD 的 FTP 守护进程(又名 lukemftpd 1.2 beta 1),并作为 lukemftpd(8) 提供。
已从 OpenBSD 引入 m4(1) ,版本日期为 2002 年 4 月 26 日。
OPIE 一次性密码套件已更新至 2.4。
OpenSSH 已更新至 3.4p1 版本,主要变化包括:
*2
文件已废弃(例如,~/.ssh/known_hosts
可包含~/.ssh/known_hosts2
的内容)。ssh-keygen(1) 支持使用 SECSH 公钥文件格式导入和导出密钥,以便与部分商业 SSH 实现进行密钥交换。
ssh-add(1) 现在会新增所有三个默认密钥。
ssh-keygen(1) 不再默认使用特定密钥类型,必须通过
-t
选项指定。引入了“权限隔离”(privilege separation)功能,使用非特权进程来限制未来可能的漏洞或编程错误的影响。
修复了一些漏洞,包括可能导致整数溢出和权限提升的问题。
默认使用的 SSH 协议版本现在是版本 2(可回退至版本 1),而不是版本 1(可回退至版本 2)。
OpenSSL 已更新至 0.9.6g。
sendmail 从 8.12.3 版本更新至 8.12.6。
smbfs 用户态工具的版本已引入 1.4.5。
GNU tar 已更新至 1.13.25。
tcsh 已更新至 6.12 版本。
texinfo 已更新至 4.2。
tcpdump 已更新至 3.7.1。
top 已更新至 3.5b12 版本。
2.3.2 Ports/软件包
已更新 Port emulators/linux_base(Linux 仿真所需)安装的库,现在对应 Red Hat Linux 7.1 的版本。
XFree86 已更新至 4.2.1 版本。此版本较 4.2.0 提供了一些安全性和错误修复
2.4 发布工程与集成
修复了一个导致 /usr/share/examples
在全新安装时未完全填充的错误。
现在,可以在 FreeBSD 4-STABLE 主机上生成 FreeBSD 5-CURRENT 的版本,反之亦然。此外,还支持跨架构发布(在不同架构的主机上为目标架构构建发布版本)。详情请参阅 release(7)。
3 从之前的 FreeBSD 版本升级
如果你从之前的 FreeBSD 版本升级,通常有以下三种选项:
使用 sysinstall(8) 的二进制升级方法。这可能是最快的方式,但假定你的 FreeBSD 安装未使用任何特殊的编译选项。
执行 FreeBSD 的完整重装。严格来说,这不是一种升级方法,并且通常比二进制升级不够方便,因为需要手动备份和恢复
/etc
的内容。然而,当你需要或想要变更磁盘分区时,这可能是有用的。从
/usr/src
的源代码升级。这种方式更灵活,但需要更多的磁盘空间、时间和技术经验。更多信息可参见 FreeBSD Handbook 的Using make world
部分。从较旧的 FreeBSD 版本升级可能会出现问题;在这种情况下,通常更有效的方法是执行二进制升级或完全重装。
在升级开始前,请阅读 INSTALL.TXT 文件以获取更多信息。如果从源代码升级,请务必阅读 /usr/src/UPDATING
。
如果你希望通过某种方式追踪 FreeBSD 的 -STABLE 或 -CURRENT 分支,请参阅 FreeBSD Handbook 中的 -CURRENT vs. -STABLE
部分。
重要提示:
升级 FreeBSD 前,应备份 所有 数据和配置文件。
此文件及其他与发布相关的文档可从 ftp://ftp.FreeBSD.org/ 下载。
关于 FreeBSD 的问题,请在联系 questions@FreeBSD.org 之前阅读 文档。
关于本文档的疑问,请发送电子邮件至 doc@FreeBSD.org。
最后更新于