FreeBSD 4.6.2 RELEASE i386 发行公告(2002 年 8 月 15 日)
FreeBSD 项目
版权所有 © 2000, 2001, 2002 FreeBSD 文档项目
FreeBSD 4.6.2-RELEASE 的发行说明总结了自 4.5-RELEASE 以来对 FreeBSD 基本系统所做的变更。包括内核和用户空间的变更,以及自上次发行以来发布的基本系统适用的安全公告。此外,还简要介绍了升级的相关说明。
1 简介
本文档包含 FreeBSD 4.6.2-RELEASE 在 IA-32 硬件平台上的发行说明。它介绍了自 4.5-RELEASE 以来新增(或变更)的 FreeBSD 特性,并提供了从先前版本升级的一些注意事项。
FreeBSD 4.6.2-RELEASE 是一个“点发行版本”,旨在解决 FreeBSD 4.6-RELEASE 中发现的一些问题(主要与安全相关)。最初,这个版本计划命名为 4.6.1。然而,在发布工程过程中出现了若干额外问题,导致发布时间延后。为了避免混淆,发布工程和安全团队决定将开发中的版本重新命名为 4.6.2。
你可以通过 ftp://ftp.FreeBSD.org/pub/FreeBSD/releases 或其任意镜像站点获取此发行版。关于获取此版本(或其他版本)发行版的更多信息,请参阅 FreeBSD 手册 中的 “获取 FreeBSD” 附录。
2 更新内容
本节介绍了自 4.5-RELEASE 以来 FreeBSD 中最显著的新功能或变更。通常的发行说明条目包括新驱动程序或硬件支持、新命令或选项、主要错误修复或第三方软件的更新。此外,还列出了 4.5-RELEASE 之后基本系统发布的安全公告。
与本次点发行版特定的变更相关的发行说明条目将标注为 [4.6.2]。
2.1 内核变更
新增了 puc(4)(PCI “通用”通信)驱动程序,用于帮助将基于 PCI 的串口连接到 sio(4) 驱动。
现在可以通过 dumpdev 加载器可调参数设置内核转储设备。因此,即使在内核初始化的后期阶段(进入单用户模式之前)发生崩溃,也可以获取转储。
snp(4) 设备不再是静态的,现在可以作为模块编译。
新增了 spic(4) 驱动,为某些索尼笔记本上的 Jog Dial 设备提供访问支持。moused(8) 也新增了对此设备的支持。
新增了用于 VIA SMBus 电源管理控制器的 viapm(4) 驱动。
2.1.1 处理器/主板支持
新增内核选项 CPU_ATHLON_SSE_HACK
,尝试在 BIOS 忘记启用 SSE 特性位的情况下,为较新的 Athlon CPU 启用 SSE。
在某些系统中,BIOS 未激活 PCI 设备的 I/O 端口和内存,使其无法使用。内核选项 PCI_ENABLE_IO_MODES
强制 FreeBSD 启用这些设备,以便使用它们。
2.1.2 启动加载器
boot2 现在支持选项 -n
,用于禁止通过按键中断启动过程。
2.1.3 网络接口支持
an(4) 驱动现已支持 Cisco LEAP 和“Home”WEP 密钥。同时,Linux Aironet 工具现在可以在模拟模式下使用。
新增对基于 ARCNET 令牌的网络的通用支持。
新增驱动程序 cm
以支持 SMC COM90cx6 ARCNET 网络适配器。
驱动 dc(4) 现在支持 VLAN。
GENERIC 内核现在通过驱动 em(4) 支持 Intel 千兆以太网卡,而非 wx(4) 驱动,后者自 FreeBSD 4.5-RELEASE 起已弃用。
新增 my
驱动以支持 Myson 快速以太网和千兆以太网适配器。
wi(4) 驱动现在支持基于 Prism II 和 Prism 2.5 的网卡。Prism 卡上的 104/128 位 WEP 功能现已可用。
wi(4) 驱动支持将 FreeBSD 主机用作无线接入点。此功能可通过 ifconfig(8) 的选项 mediaopt hostap
启用。此功能需要基于 Prism II 芯片组的无线适配器。
wi(4) 驱动现在支持 bsd-airtools。
xe
驱动现在可以作为模块构建。
部分网络驱动现在实现了一种半轮询模式,使系统在应对攻击和过载时更加稳定。要启用轮询,需要在内核配置文件中加入以下选项:
随后可以通过 sysctl 变量 kern.polling.enable
激活轮询模式;sysctl kern.polling.user_frac
用于指示保留给用户态的 CPU 时间百分比。初步支持轮询的设备包括 dc(4)、fxp(4)、rl(4) 和 sis(4)。更多详情可参考手册页 polling(4)。
2.1.4 网络协议
bridge(4) 现在更好地支持多个完全独立的桥接集群,并且在动态连接和断开时更稳定。此外,桥接集群也完全支持 VLAN。
修复了 IPv4 中 IPsec 处理的一个错误,该错误导致忽略了入站 SPD 检查。
新增了 netgraph 模块 ng_eiface
,该模块以以太网接口形式存在,但将其以太网帧传递到 Netgraph 挂钩。
新增了 ng_etf(4) netgraph 节点,该节点允许根据以太网类型过滤数据包到不同的挂钩。
修复了 tcp(4) 同步缓存实现中的一个错误,该错误可能导致内核崩溃。
TCP 实现现在可正确忽略发送到 IP 层广播地址的数据包。
2.1.5 磁盘和存储
驱动 ahc(4) 已与截至 2002 年 4 月 29 日的 FreeBSD -CURRENT 版本同步。
驱动 ata(4) 已与截至 2002 年 3 月 18 日的 FreeBSD -CURRENT 版本同步。
[4.6.2] 修复了 ata(4) 标记队列在某些情况下无法正常工作的错误。
驱动 ata(4) 现在支持在 atacontrol(8) 的控制下创建、删除、查询和重建 ATA RAID。
[4.6.2] 驱动 ata(4) 现在可正确计算最大传输大小。这修复了在访问某些 ATA 设备时发生的许多 READ_BIG
和其他错误。
2.1.6 文件系统
修复了软更新中的一个漏洞,该漏洞可能导致在执行繁重的文件系统操作后(例如安装新内核或其他软件)立即关闭系统时,偶发件系统损坏的问题。
2.1.7 PCCARD 支持
[4.6.2] 修复了 PCCARD 电源代码中的一个漏洞。此修复解决了一个主要出现在 Sony VAIO 和 Toshiba 笔记本电脑上的问题,即某些机器可能在启动时或首次访问 PCCARD 时挂起。与此漏洞相关的其他问题可能也已被修复;特别是,基于 ToPIC 芯片的 Toshiba 笔记本电脑现在可以同时使用两个插槽,同时某些 PCI 插入卡的临时解决方案也不再需要。
2.1.8 多媒体支持
新增了支持 D-Link DSB-R100 USB 收音机的 ufm 驱动程序。
声音驱动程序 via82c686 现已支持 VIA VT8233 芯片。
声音驱动程序 ich 现已支持 SiS 7012 芯片组。
驱动程序 pcm(4)已与截至 2002 年 4 月 22 日的 FreeBSD -CURRENT 版本同步。
2.1.9 第三方软件
2.1.9.1 IPFilter
IPFilter 已更新至 3.4.27。
2.1.9.2 isdn4bsd
新增了驱动程序 ifpi2(4) ,用于支持 AVM Fritz!Card PCI 第 2 版本控制器。
2.2 安全公告
在 OpenSSH 的多路复用代码中修复了一个“off-by-one”漏洞。该漏洞可能允许经过身份验证的远程用户使 sshd(8) 以超级用户权限执行任意代码,或者允许恶意的 SSH 服务器以客户端用户的权限在客户端系统上执行任意代码。(参见安全公告 FreeBSD-SA-02:13。)
zlib 中的一个编程错误可能导致尝试多次释放内存。FreeBSD 中使用的 malloc(3)/free(3) 例程不受此错误影响,但应用程序在接收到特制的无效压缩数据块时可能会出现功能异常或终止。此 zlib 错误已修复。有关解决方法和解决方案,请参见安全公告 FreeBSD-SA-02:18。
修复了 TCP SYN 缓存(“syncache”)和 SYN Cookie(“syncookie”)实现中的漏洞,这些漏洞可能导致合法的 TCP/IP 流量使机器崩溃。有关解决方法和补丁,请参见安全公告 FreeBSD-SA-02:20。
修复了路由表内存泄漏漏洞,该漏洞可能允许远程攻击者耗尽目标机器的内存。解决方法和补丁可以在安全公告 FreeBSD-SA-02:21 中找到。
修复了一个与内存映射 I/O 相关的错误,该错误可能导致系统崩溃。有关解决方案的更多信息,请参见安全公告 FreeBSD-SA-02:22。
修复了一个安全漏洞,该漏洞可能通过操控 SUID 程序的标准 I/O 文件描述符使其读取或写入不适当的文件。有关解决方案的信息,请参见安全公告 FreeBSD-SA-02:23。
[4.6.2] 针对安全公告 SA-02:23(解决了 set-user-id
或 set-group-id
程序使用文件描述符的问题)的初始修复包含错误。使用 procfs(5) 或 linprocfs(5) 的系统仍可能受到攻击。此错误现已修正;修订版安全公告 FreeBSD-SA-02:23 包含更多详细信息。
由于 k5su(8) 不要求调用用户是 wheel
组成员即可尝试成为超级用户(与 su(1) 不同),这可能导致一些意外行为。为避免此情况,k5su(8) 现在默认以非 SUID 安装(实际上禁用了它)。更多信息参见安全公告 FreeBSD-SA-02:24。
发现 bzip2 工具中的多个漏洞,可能导致文件被意外覆盖或允许本地用户非预期地访问文件。这些问题已通过新的 bzip2 导入得到修正。更多信息参见安全公告 FreeBSD-SA-02:25。
修复了 TCP SYN 缓存(“syncache”)实现中的一个错误,该错误可能在使用接受过滤器(参见 accept_filter(9))时使远程攻击者拒绝访问服务。有关更多信息,请参见安全公告 FreeBSD-SA-02:26。
由于 rc(8) 使用的 shell 通配符存在漏洞,如果 /tmp/.X11-unix
不存在且系统可被重启,用户可能删除任意文件的内容。此漏洞已被修复(参见安全公告 FreeBSD-SA-02:27)。
[4.6.2] 修复了解析器中的缓冲区溢出漏洞,该漏洞可能被恶意域名服务器或伪造 DNS 消息的攻击者利用。有关更多详细信息,请参见安全公告 FreeBSD-SA-02:28。
[4.6.2] 修复了 tcpdump(1) 中的缓冲区溢出漏洞,该漏洞可能被格式错误的 NFS 数据包触发。更多详细信息参见安全公告 FreeBSD-SA-02:29。
[4.6.2] 修复了 ktrace(1) 的问题,该问题可能允许跟踪以前有特权的进程的操作,进而泄漏敏感信息。有关更多详细信息,请参见安全公告 FreeBSD-SA-02:30。
[4.6.2] 修复了 pppd(8) 中的竞争条件漏洞,该漏洞可能被用来变更任意文件的权限。有关更多信息,请参见安全公告 FreeBSD-SA-02:32。
[4.6.2] 修复了 OpenSSL 中的多个缓冲区溢出漏洞,方法是升级了基本系统中的 OpenSSL 版本。更多详细信息参见安全公告 FreeBSD-SA-02:33。
[4.6.2] 修复了 XDR 解码器中的堆缓冲区溢出漏洞。更多详细信息请参见安全公告 FreeBSD-SA-02:34。
[4.6.2] 修复了可能允许本地用户在 FFS 文件系统上读取和写入任意块的漏洞。更多详细信息请参见安全公告 FreeBSD-SA-02:35。
[4.6.2] 修复了 NFS 服务器代码中的漏洞,该漏洞可能允许远程拒绝服务攻击。安全公告 FreeBSD-SA-02:36 中有更多详细信息。
[4.6.2] 修复了 kqueue(2) 机制中的漏洞,该漏洞可能允许本地用户使系统崩溃。更多信息请参见安全公告 FreeBSD-SA-02:37。
2.3 用户空间变更
新增 atacontrol(8) ,可用于控制 ata(4) 驱动程序的各种功能。
在 ATAPI CD-ROM 驱动器上,cdcontrol(1) 现在支持速度命令,可设置驱动器的最大使用速度。
ctags(1) 不再因源文件使用了 //
(C++ 风格)注释而生成损坏的标签文件。
dump(8) 现在在进程标题中显示进度信息,便于监控自动备份。
/etc/rc.firewall
和 /etc/rc.firewall6
当变量 firewall_type
中有规则文件或防火墙类型不存在时,不再新增硬编码的规则(此变更的目的是避免对站点的防火墙策略做出假设)。此外,闭合防火墙类型(closed firewall type)现在按照 rc.firewall(8) 手册页的文档工作。
/etc/security 的功能已迁移到 periodic(8) 框架下的一组脚本中,以便更轻松地进行本地定制和维护。这些脚本现在位于 /etc/periodic/security/
。
ifconfig(8) 的 ether 地址族现已变更为更通用的 link 地址族(仍支持 ether 以兼容旧版)。
fsdb(8) 现在支持 blocks 命令,可列出特定 inode 分配的块。
ispppcontrol(8) 已删除,其功能已合并到 spppcontrol(8)。
k5su(8) 默认不再安装为 SUID root。需要此功能的用户可以手动变更 k5su(8) 可执行文件的权限,或者在源码升级前在 /etc/make.conf
中新增 ENABLE_SUID_K5SU=yes
。
ldd(1) 现在可以用于共享库以及可执行文件。
last(1) 现在支持参数 -y
,可在会话开始时间中包含年份。
libstand 现在支持从多个物理介质加载跨越多卷的大内核和模块。
libusb 已重命名为 libusbhid,与 NetBSD 的命名惯例保持一致。
lpd(8) 现在将参数 -s
视为 -p
的首选同义词(这些参数使 lpd(8) 不为网络打印作业打开套接字)。
ls(1) 现在接受 -h
参数,当与 -l
参数结合使用时,文件大小以带单位后缀的格式打印,以使数字位数少于四位。
mergemaster(8) 新增两个参数。-p 参数启用“预 buildworld”模式,以比较对 buildworld
和 installworld
系统更新步骤至关重要的文件。-C
参数在 mergemaster(8) 成功运行后使用,比较 /etc/rc.conf
和 /etc/defaults/rc.conf
中的默认选项。
ps(1) 的 -W
选项已无用,现已删除。
sshd(8) 对未启用 S/Key 的用户,不再发出虚假的 S/Key 挑战提示。此前的行为在使用一些较新的 SSH 客户端连接 FreeBSD 系统时,会生成混淆且无用的一次性密码提示。
uuencode(1) 和 uudecode(1) 现在接受 -o 选项以设置输出文件。uuencode(1) 在使用 -m
参数时可以进行 base64 编码,而 uudecode(1) 则可自动解码 base64 文件。
某些格式为 *.EUC
的地区设置名称已重命名为 *.euc??
,例如 ja_JP.EUC
改为 ja_JP.eucJP
。这改善了与 FreeBSD CURRENT、X11R6 及其他多个 UNIX 版本的兼容性。
地区设置支持已与 FreeBSD CURRENT 的代码同步,此变更引入了对 LC_NUMERIC
、LC_MONETARY
和 LC_MESSAGES
类别的支持,并改进了 strftime(3)、修订的地区定义以及许多基本系统程序的本地化改进。
2.3.1 第三方软件
[4.6.2] BIND 已更新为 8.3.3。
bzip2 已更新为 1.0.2。
Heimdal Kerberos 已更新为 0.4e。
ISC DHCP 客户端已更新为 3.0.1RC8。
[4.6.2] OpenSSH 已更新为 3.4p1 版本。变更包括:
*2
文件已过时(例如,~/.ssh/known_hosts
可以包含~/.ssh/known_hosts2
的内容)。ssh-keygen(1) 可以使用 SECSH 公钥文件格式导入和导出密钥,以便与多个商业 SSH 实现进行密钥交换。
ssh-add(1) 现在会新增所有三种默认密钥。
ssh-keygen(1) 不再默认选择特定的密钥类型;必须使用 -t 选项来指定密钥类型。
引入了“特权分离”功能,使用非特权进程来限制和约束未来的漏洞或编程错误的影响。
修复了几个 bug,包括关闭了一个可能导致整数溢出和不期望的特权提升的安全漏洞。
注意: 与 FreeBSD 4.6-RELEASE 一样,Protocol 1,2 仍然是
/etc/ssh/ssh_config
中的默认协议设置。在 FreeBSD -CURRENT(以及写作时的 FreeBSD 4-STABLE)中,默认设置为 Protocol 2,1。
[4.6.2] OpenSSL 已更新为 0.9.6e。
texinfo 已更新为 4.1。
时区数据库已更新为 tzdata2002c 版本。
2.3.1.1 Sendmail
sendmail 已更新为 8.12.3。sendmail(8) 不再作为 set-user-ID root 二进制文件安装(现在是 set-group-ID smmsp)。更多信息请参见 /usr/src/contrib/sendmail/RELEASE_NOTES
和 /etc/mail/README
。
随着此 sendmail 升级,即使变量 sendmail_enable
设置为 NO
,多个 sendmail 守护进程(其中一些用于处理外发邮件)也会由 rc(8) 启动。要完全禁用 sendmail,必须将 sendmail_enable
设置为 NONE
。或者,对于使用其他 MTA 的系统,可以使用变量 mta_start_script
来指向其他启动脚本(更多细节请参见 rc.sendmail(8))。
通过 /etc/mail/Makefile
构建的 sendmail 别名和映射数据库的权限现在默认为模式 0640
,以防止文件锁定导致的本地拒绝服务。可以通过设置新的 make.conf 选项 SENDMAIL_MAP_PERMS
来变更。
sendmail 统计文件 /var/log/sendmail.st
的权限已从模式 0644
变更为模式 0640
,以防止文件锁定导致的本地拒绝服务。
[4.6.2] 已修复一个潜在的 DNS 映射缓冲区溢出漏洞(此漏洞在默认配置中未使用)。
注意:
该 bug 已通过导入新版 sendmail 在 FreeBSD 4.6-STABLE 中修复。
2.3.2 Ports/软件包
Ports 基础设施现在使用 XFree86 4.2.0 作为默认版本的 X Window 系统,以满足依赖关系。如果想恢复使用 XFree86 3.3.6,请将以下行新增到 /etc/make.conf
:
2.4 发布工程与集成
XFree86 4.2.0 现在是 sysinstall(8) 支持的默认 X Window 系统版本。它作为一组标准二进制包安装,因此可以使用常见的包管理工具,如 pkg_info(1) 来检查/操作其组件。
[4.6.2] 已修复一个导致在新安装时 /usr/share/examples
未完全覆盖的 bug。
旧版 FreeBSD 升级
如果你正在从之前的 FreeBSD 版本进行升级,通常有三种选择:
使用 sysinstall(8) 的二进制升级选项。这个选项可能是最快的,尽管它假设你的 FreeBSD 安装没有使用特殊的编译选项。
完全重新安装 FreeBSD。严格来说,这不是一种升级方法,而且通常比二进制升级更不方便,因为它要求你手动备份并恢复
/etc
的内容。然而,如果你想(或需要)变更磁盘的分区方式,它可能会很有用。从
/usr/src
中的源代码进行升级。这条路径更灵活,但需要更多的磁盘空间、时间和技术专业知识。更多信息可以在 FreeBSD 手册 中的 `使用 make world' 部分找到。从非常旧版本的 FreeBSD 升级可能会遇到问题;在这种情况下,通常执行二进制升级或完全重新安装会更有效。
请阅读 INSTALL.TXT
文件以获取更多信息,最好是在开始升级之前。如果你是从源代码升级,请确保阅读 /usr/src/UPDATING
文件。
最后,如果你希望使用各种方式跟踪 FreeBSD 的 -STABLE 或 -CURRENT 分支,请务必查阅 `-CURRENT 与 -STABLE' 部分的 FreeBSD 手册。
重要:
升级 FreeBSD 之前,务必先备份 所有 数据和配置文件。
此文件及其他与版本相关的文档可以从 ftp://ftp.FreeBSD.org/pub/FreeBSD/releases 下载。
有关 FreeBSD 的问题,请在联系 questions@FreeBSD.org 之前阅读 文档。
有关此文档的问题,请发送电子邮件至 doc@FreeBSD.org。
最后更新于