FreeBSD 2003 年 10-12 月状态报告

原文链接:FreeBSD 2003 年 10-12 月状态报告

引言:

FreeBSD 状态报告回归了,这是 2003 年度的年终版。许多新项目正在启动并获得动力,包括 XFS、MIPS、PowerPC 以及网络锁和多线程。2003 年底,FreeBSD 4.9 发布,这是第一个支持超过 4GB 的 ia32 平台的稳定版本。FreeBSD 5.2 的工作也已完成,并于 2004 年 1 月初发布。感谢所有为这些版本的发布付出努力的人们。

这是有史以来最长的状态报告,尽情阅读吧!

Scott Long, Robert Watson

联系人:Maksim Yevmenkin <m_evmenkin@yahoo.com>

没有太多新进展。蓝牙代码已经集成到 FreeBSD 源代码树中,蓝牙内核模块似乎很稳定。我收到了少数用户的成功案例反馈。

过去几个月的工作集中在使蓝牙代码更易于使用。蓝牙服务发现协议守护进程(sdpd)已经在 BSD 风格许可证下重新实现并提交。下一步是将现有的蓝牙工具与 SDP 集成。

感谢 Matt Peterson ,我现在拥有了蓝牙键盘和鼠标用于开发。我目前正在开发蓝牙 HID 配置文件的实现。

来自 NetBSD 项目的 Dave Sainty 提供了帮助,协助将蓝牙堆栈移植到 NetBSD。

链接

ACPI TODO ACPI-JP 邮件列表

联系人:Nate Lawson <njl@FreeBSD.org>

已于 11 月提交更新后的 acpi_cpu 驱动程序。当前正在进行的工作包括完成对 _CST 重新评估的支持,这使得基于 Centrino 等处理器的笔记本可以在插入或断开交流电源时使用不同的 CPU 空闲状态。5.2-RELEASE 也发布了对 _CID 包的支持,解决了 Compaq 用户的鼠标探测问题。现在可以通过 rc.conf(5) 设置来控制 CPU 空闲状态和限速,通过脚本 /etc/power_profile 在 AC 状态变化时切换性能/经济模式。

目前正在进行的一项重要任务是 cpufreq 项目,这是一种检测和控制各种频率/电压技术(如 SpeedStep、LongRun、ACPI 性能状态等)的框架。ACPI 性能状态驱动程序已经在工作,框架正在实现中。它需要为 CPU 添加 newbus 附加,因此在驱动程序提交之前需要进行一些基础工作。

ACPI-CA 已在 12 月初更新至 20031203,并经过一些补丁后保持稳定。已经编写了 ACPI 调试操作指南,并由 trhodes@ 进行 DocBook 格式化。jhb@ 正在进行修复由于各种设置 SCI 的方式导致的中断风暴的工作。

我想欢迎 Philip Paeps (philip@) 加入 FreeBSD 团队。Philip 编写了一个 ACPI ASUS 驱动程序,该驱动程序将很快提交,并且在邮件列表中提供了很多帮助。我们还得到了 jhb@、marcel@、imp@ 和 peter@ 的大力支持。我们希望看到 takawata@ 和 iwasaki@ 的回归,他们过去曾给予我们很大帮助。如果有开发人员有兴趣协助 ACPI 项目,请查看 ACPI TODO 并通过邮件联系我们。

联系人:John Baldwin <jhb@FreeBSD.org>

添加了对 AGP 3.0 的简单支持,包括对 AGP 8x 模式的支持。这个支持是简单的,因为它仍然假定只有一个主设备和一个目标设备。主要的改进是能够使用支持 AGP 8x 的 drm 模块。

链接http://www.daemonology.net/freebsd-update/

联系人:Colin Percival <cperciva@daemonology.net>

感谢最近的捐赠,我现在正在为 FreeBSD {4.7、4.8、4.9、5.0、5.1、5.2}-RELEASE 构建二进制安全更新。(注意,官方已不再支持 FreeBSD 4.7 和 5.0;任何未在 CVS 树中反映的安全通告也不会提供二进制更新。)

当前版本(1.5)的 FreeBSD Update 会警告本地修改的文件,并且默认不会对它们进行修改;如果指定了“分发分支”(例如 crypto、nocrypto、krb4 或 krb5),则 FreeBSD Update 可以强制“更新”已本地编译的文件。

FreeBSD Update 唯一剩下的主要问题是更新构建过程的单点故障;我希望将来能通过让几台机器进行交叉验证和交叉签名来解决这个问题,但这需要大量的时间投入,可能要等我完成写作博士论文后才能进行。

链接

一些补丁

联系人:Alexander Leidinger <netchild@FreeBSD.org>

FreeBSD 内核现在可以使用 icc v7 编译并正常运行(到目前为止仅测试了 GENERIC 内核和自定义内核)。在 arch@ 上的审查中没有发现重大问题,一些源代码提交者愿意提交这些补丁。由于 icc v8 已经发布并定义了 __GNUC__,我希望在提交之前重新处理这些补丁,以确保 icc v8 编译的内核也能正常工作。

截至 12 月初,已完成对 Ports 的完整构建,并正在审查以确定构建失败的原因。目前的 icc 统计数据:

  • 1108 次构建失败(排除因依赖失败导致的构建失败)

  • 3535 个成功构建的软件包(约 1.7 GB)

与 gcc 在同一 Ports 快照上进行的并行构建结果是:

  • 520 次构建失败(排除因依赖失败导致的构建失败)

  • 7261 个成功构建的软件包(约 4.8 GB)

上述 Port 的构建是在一个使用 icc 编译的内核(针对 P4 优化)的 P4 上运行的。未发现内核崩溃或其他异常行为。Ports 是使用 CPUTYPE 设置为 p4 和 CFLAGS 设置为 -Os -pipe -mfpmath=sse -msse2 的 gcc 构建的,在 icc 的情况下为 -O2。目前没有测试任何软件包的运行时行为是否正确。

链接

FreeBSD 捐赠项目

联系人:Michael Lucas <donations@FreeBSD.org>

对捐赠团队来说,2003 年是相当成功的。我们将 200 余项来自捐赠者的物品交到开发人员手中。几个亮点包括:为安全团队提供的小型集群、为我们的 cardbus 工作提供的各种笔记本硬件以及为我们的标准组提供的文档。在 FreeBSD.org 的主集群中,我们成功地将 8 台 DEC Miata 机器替换为 6 台 Alpha DS10(21264)。每个从事 SMP 工作的提交者现在都有了多处理器测试硬件。

我们与 FreeBSD 基金会顺利地解决了税收减免流程,现在可以直接将捐赠物品寄给收件人,而不需要占用基金会的时间来处理运输。

当前团队成员包括:Michael Lucas、David O'Brien 和 Tom Rhodes。Wilko Bulte 已取代 Robert Watson 成为核心团队代表。

链接

主页和源代码

计算机模块

http://www.dvb.org/

联系人:Vincent Jardin <Vincent.Jardin@6wind.com>

DVB ASI 代表数字视频广播 - 异步串行接口。它是一个标准,用于从卫星(DVB-S)、地面链路(DVB-T)和电视有线(DVB-C)接收和发送 DVB 流。该标准在欧洲开发,用于传输 188 字节和 204 字节的 MPEG 单元。然而,它也可以用于通过 DVB 传输 IP。

FreeBSD 驱动程序使用新总线和 bus-dma API。这意味着它可以轻松地移植到所有 BSD 系统(NetBSD、OpenBSD)。

它使用与来自 ComputerModules 的 Linux DVB ASI 支持相同的 API,该支持基于以下设备:

  • /dev/asitxN 用于传输流(仅支持 open、write、select、close 和 ioctl)

  • /dev/asirxN 用于接收流(仅支持 open、read、select、close 和 ioctl)

这意味着像 Videolan 这样的软件,支持 DVB-ASI 广播,也可以通过此驱动程序得到支持。特别感谢 Computer Modules 的 Tom Thorsteinson,他帮助 6WIND 移植他们的驱动程序。6WIND 使用它来通过 DVB 提供 IPv4、IPv6、以太网和我们的网络服务。

版权所有 2003-2004,6WIND

联系人:Mathew Kanner <matk@FreeBSD.org>

该项目旨在更新当前的 MIDI 实现。我们目前计划在 2 月份删除当前的代码,并在不久后导入新版本。我目前正在为没有外部硬件的用户开发一个内核/timidity 桥接。

链接

FreeBSD Ports 监控系统

联系人:Mark Linimon <linimon_at_lonesome_dot_com>

该系统的增强功能持续进行中。包括对 PR 分类算法的改进、更加准确地猜测 PR 更新时机,以及更好的处理 Port Makefile 和 bento 构建中的错误,这些都对最终用户不可见。然而,"repocopy" 分类的增加以及在“查看单一 Port 概况”时允许使用通配符搜索值得注意(感谢 edwin@ 在这方面的推动)。此外,还添加了逻辑来识别新 Port 的提议分类/Port 名,目标是快速识别可能的重复工作(为了达到这个目标,一些 SQL 性能被牺牲,导致一些页面加载速度变慢;这个问题需要修复)。

其他的工作包括为偶尔发送邮件给维护者的邮件后端。当前有两个功能可用:“提醒维护者他们标记为 BROKEN 的 Port”和“提醒维护者可能没有看到的 PR”。最近一次运行前者得到了普遍积极的回应,特别是因为将一些 BROKEN 状态更改为 IGNORE(PR ports/61090)后,几乎消除了所有烦人的假阳性。然而,仍需继续工作,找出为什么一些声称有问题的 Port 仅在某些环境下失败(包括 bento 集群)。

下一个计划是使用提议的 DEPRECATED Makevar(参见 ports/59362),创建一个新的报告,以便查询“目前计划移除的 Port”。此报告也可以定期发布到 ports@,无需太多工作。作者认为这样做将使 Port 弃用过程对普通 FreeBSD 用户社区更加可见。

链接http://www.freebsd.org/projects/mips/

联系人:Juli Mallett <jmallett@FreeBSD.org>

TLB 支持代码和 PMAP 进展顺利。GCC 和相关工具已与主树保持同步。Broadcom 捐赠了一块评估板,并已开始在该平台上的初步工作。从 NetBSD 导入的用于引导工作的一些旧代码已被清理。系统已经能够进入尝试初始化文件系统的阶段,但在此里程碑之前仍然存在一些错误。

联系人:Rafal Jaworowski <rafal.jaworowski@motorola.com>

直接目标是使 FreeBSD/powerpc 在 Motorola MCP750 及类似的基于 Compact PCI 标准的单板计算机上工作。基于这项工作,将很容易将其移植到其他嵌入式系统。

  1. loader(8):它基于现有的 FreeBSD/powerpc 平台的加载器,但移除了与 OpenFirmware 的绑定,并用 PPCBug 固件绑定取而代之。目前只支持网络启动,因此未来需要为磁盘(如 Compact Flash)添加支持。该加载器是唯一依赖于 PPCBug 系统调用的部分——待内核启动,它就不再需要固件支持。

  2. 内核:现在与 OpenFirmware 依赖关系分离;大部分基础工作已经完成,包括:nexus 相关的工作已解决(资源管理正常,除中断分配外);主机到 PCI 桥的低级例程已完成,因此 PCI 设备的配置和访问正常工作;唯一缺失的关键部分是 IRQ 管理(Raven MPIC 部分已完成,但该板有第二个兼容 8259 的 PIC 需要设置,现有的 x86 架构代码将在这里被采用)。

待 IRQ 管理问题解决,板上的大部分设备将直接工作,因为它们都是标准芯片,且驱动程序已经在树中实现(例如 if_de)。

目前工作暂停(无法物理访问设备),但会在我回家后(2 月底)继续。

链接

jpman 项目

联系人:Kazuo Horikawa <horikawa@FreeBSD.org>

我们一直在更新现有的日语手册页面翻译,以符合 5.2-RELEASE 的时间表。同时,在此期间完成了 22 个新的翻译。

链接

启动此项目的问题报告

联系人:Tom Rhodes <trhodes@FreeBSD.org>

FreeBSD 有几百个调优项尚未有文档。该项目旨在设计一个自动化流程,从所有可用的调优项中提取信息,并根据选择的内核选项生成手册页。然而,理想的实现是从 LINT 内核中收集调优项。这将为所有支持的架构提供一个默认的手册页。一个简单的工具已经根据各种邮件列表和非邮件列表的讨论制作完成,正在等待 -doc 团队的审查。任何有兴趣审查我当前工作的人员请与我联系。

链接

http://www.freebsd.org/~nsouch/kgi4BSD

http://www.kgi-project.org/

联系人:Nicholas Souchu <nsouch@FreeBSD.org>

大部分控制台模块已经到位,结果非常不错(请参见网站上的屏幕截图)。启动控制台和虚拟终端已经可以工作,支持 8 位渲染并且与内核中的真实图形驱动完美集成。

现在是时候将其带给终端用户,已经提供了一个预编译的 R5.2 GENERIC 内核(请参见网站新闻)。与此同时,在提供 R5.2 的最后一个 tarball/补丁后,所有内容将移至 Perforce。

和往常一样,欢迎志愿者参与。任务庞大但非常令人兴奋。

联系人:Daniel Eischen <deischen@FreeBSD.org>

libkse 库将很快重命名为 libpthread,并成为默认的线程库。这包括使 GCC 的 -pthread 选项链接到 -lpthread,而不是 libc_r,并将 PTHREAD_LIBS 改为 -lpthread。David Xu 一直在处理 GDB 支持,并已使其与当前树中的 GDB 兼容。下一步是创建 libpthread_db,并使其与 GDB 6.0(marcel 已将其导入 Perforce 树)兼容。

链接http://people.freebsd.org/~kientzle/libarchive/

联系人:Tim Kientzle <kientzle@FreeBSD.org>

libarchive 库,能够读取和写入 tar 和 cpio 存档,已经接近提交到树中的阶段。基于 libarchive 构建的 bsdtar 程序也接近完成,应该很快成为我们逐渐老化的 GNU tar 的有价值继任者。我计划进行逐步过渡,在此期间,“bsdtar”和“gtar”将并存于树中。

奇怪的是,libarchive 和 bsdtar 是完全重写 pkg 工具项目的第一个成果。我已经开始构建一个 libpkg 库来处理常规的包管理,并且已经有一个原型的 pkg_add,比当前版本快三倍。

联系人:Brooks Davis <brooks@FreeBSD.org>

在十月底,结构体 ifnet 的 if_name 和 if_unit 成员被 NetBSD 的 if_xname 以及 if_dname 和 if_dunit 替代。它们分别表示接口的名称、驱动程序的名称和接口的实例。除了由于用户空间在厂商分支上,这一变更在短时间内导致了 IPFilter 的一些问题外,其他一切进展顺利。几个 Port 需要进行小的修改,但从用户的角度来看,其他方面没有变化。

此次更改的目的是为网络接口重命名的支持奠定基础,并实现更有趣的伪接口克隆支持。一个有趣的克隆支持的例子是,使用“ifconfig fxp0.20 create”命令在 fxp0 上创建和配置一个 VLAN 接口,该接口处理标记为 20 的帧。接口重命名目前正在 Perforce 上工作,预计很快会有可供审查的版本。增强型设备克隆支持仍在规划阶段。

联系人:Sam Leffler <sam@FreeBSD.org>

该项目的目的是提升网络子系统的性能。工作的重要部分是完成网络子系统的锁定,使其不再依赖于“Giant 锁”来正常工作。去除 Giant 锁将提高性能,并允许在多处理器系统上并行运行多个网络栈实例。

网络子系统的锁定工作基本完成。网络驱动程序、中间件层(如 ipfw、dummynet、bridge 等)、路由表、IPv4、NFS 和套接字都已锁定,并且在没有使用 Giant 锁的情况下正常运行。大部分工作已包含在 5.2 版本中,但默认未启用。剩余的工作(主要是套接字层的锁定)将在解决如何处理“遗留协议”(即那些未锁定的协议)后提交到 CVS。现在可以从 Perforce 数据库中获取代码。各种测试和生产系统已经运行这段代码几个月,没有出现明显问题。

性能分析和调优仍在进行中。初步结果表明,SMP 性能已超越 4.x 系统,但单处理器(UP)性能仍落后(尽管已比 -current 有所改善)。从网络子系统中移除 Giant 锁减少了对 Giant 的竞争,并突出了系统其他部分的性能瓶颈。

该工作得到了 FreeBSD 基金会的支持。

链接

http://pf4freebsd.love2party.net/

PF 主页

PF 常见问题

联系人:Max Laier <max@love2party.net>

联系人:Pyun YongHyeon <yongari@kt-is.co.kr>

为了使 2.00 版本稳定,投入了大量工作。它提供了完整的 OpenBSD 3.4 功能集,以及精细的锁定机制,以便与没有巨型锁的网络栈一起工作。

pf 提供:IPv6 过滤和规范化,保护(Web)服务器免受 SYN 洪水攻击的“syn-proxy”,被动操作系统检测,快速且模块化的地址表,源/策略路由,状态滤波和规范化引擎,通过锚点的结构化规则集,以及更多的功能。特别是与 ALTQ 结合使用时,pf 可以帮助抵御各种洪水攻击,并改善用户体验。

OpenBSD-Current 中的新特性,如:通过网络进行的状态同步和增强的克隆接口支持,需要对内核进行补丁。我们正在努力解决这个问题,并尽快重新开始跟踪 OpenBSD-Current。

链接

更新的出版页面

联系人:Josef El-Rayes <josef@daemon.li>

我进行了 xml/xslt 转换,将 HTML 文件转换为更易维护的格式。我删除了 cdsets,这些文件可能会出于历史原因保存在 CVS 或某种档案中。书籍得到了更新,并根据它们的语言进行了分类。待我获得对 CVS 仓库的访问权限,我将提交这些更新。鼓励大家添加本地的 FreeBSD 书籍,尤其是我遗漏的亚洲地区书籍。欢迎随时向我发送要添加的书籍链接。

联系人:Alexander Kabaev <kan@FreeBSD.org>

联系人:Russell Cattelan <cattelan@thebarn.com>

该项目旨在恢复一个停滞的工作,移植 SGI XFS 日志文件系统到 FreeBSD。该项目基于 SGI 的 Linux 开发源代码,目前保存在一个私人 Perforce 仓库中。由于缺乏空闲时间,工作进展缓慢。目前我们已经有了一个 XFS 内核模块,它能够以只读方式挂载 XFS 文件系统,偶尔会发生 panic 现象,需要隔离并修复。具有完整事务支持的半工作状态的元数据更新也已经完成,但可能需要重写,以减少对内核所需的自定义更改。

我们正在寻找志愿者来帮助移植的用户空间部分。具体来说,现有的 xfsprogs 移植需要清理,未完全移植的工具需要整理为可用状态。xfs_dump/xfs_restore 以及尽可能多的来自 xfstests 套件的工具也需要移植。我们目前不需要测试人员,因此请暂时不要请求模块源代码。

链接

联系人:John Baldwin <jhb@FreeBSD.org>

联系人:<smp@FreeBSD.org>

SMPng 在多个方面的工作正在进展中。正如在本报告的其他地方提到的,Sam Leffler 和其他几位开发者一直在致力于锁定网络栈。过去几个月也进行了一些基础设施的改进。

i386 架构的低级中断代码已被重新设计,以支持在运行时选择不同类型的中断控制器。这项工作使得可以使用高级可编程中断控制器(APIC),而不需要为此编译一个单独的内核。它还允许在 UP 内核和 UP 设备上使用 APIC。所有这些变化一起使得 SMP 内核能够在 UP 设备上工作,并使得 SMP 能够像在其他所有支持的架构中一样在 GENERIC 内核中启用。这项工作还重新设计了 APIC 支持,确保在使用 APIC 服务设备中断时正确路由 PCI 中断。此工作还用于为 amd64 平台添加 SMP 支持。

提交了一个转闸(turnstile)实现,它实现了一个阻塞在资源上的线程队列,并支持线程优先继承到资源的所有者。转闸随后被用来替换每个互斥锁对象中内置的线程队列,从而缩小了每个互斥锁的大小,并减少了对调度锁(sched_lock)自旋互斥锁的使用。

链接

FreeBSD 项目 [俄语]

联系人:Andrey Zakhvatov <andy@FreeBSD.org>

FreeBSD 俄罗斯文档项目旨在提供 FreeBSD 文档的俄语翻译。目前已完成:FAQ、Porters Handbook、WWW(部分与英文版本同步)和一些文章。

我们正在翻译并同步手册(以及更多文档)与英文版本,并且需要更多翻译人员(或经济援助以继续我们的工作)。如果你能提供帮助,请通过 ru-cvs-committers@FreeBSD.org.ua(或 andy@FreeBSD.org)与我们联系。

链接

TrustedBSD SEBSD 页面

联系人:Robert Watson <rwatson@FreeBSD.org>

联系人:TrustedBSD 讨论邮件列表 <trustedbsd-discuss@TrustedBSD.org>

TrustedBSD Security-Enhanced BSD(SEBSD)是将美国国家安全局(NSA)的 SELinux FLASK 安全架构、类型强制(TE)策略引擎和语言、以及示例策略移植到 FreeBSD,并使用 TrustedBSD MAC 框架。SEBSD 作为一个可加载的策略模块提供给 MAC 框架,并支持一套用户空间扩展,以支持安全扩展标记调用。在大多数情况下,现有的 MAC 框架功能提供了 SEBSD 插入所需的抽象,而无需特定于 SEBSD 的更改,但一些对 MAC 框架的扩展是必需的;这些更改在 SEBSD 开发分支中开发,成熟后会合并到 MAC 分支,然后再合并到 FreeBSD 开发树。

与其他 MAC 框架策略模块不同,SEBSD 模块遵循 GPL,因为它源自 NSA 的实现。然而,最终目标是支持将 SEBSD 插入到基本的 FreeBSD 安装中,而无需修改 FreeBSD 本身。

TrustedBSD SEBSD 开发分支已在 Perforce 中集成到 5.2-RELEASE。MAC 分支中的其他更改,包括 MAC 框架文件的重构也已集成,并且标签的分配已迁移到区域分配。有关这些以及其他影响 SEBSD 工作的 MAC 更改的详细信息,请参见 TrustedBSD MAC 框架报告。

FreeBSD PTY 代码已被修改,以便 MAC 框架和 SEBSD 模块可以创建具有尝试访问它们的进程标签的 pty。这提高了与 SELinux 示例策略的兼容性。(尚未合并)

SEBSD 现在在引导加载器中加载其初始策略,而不是在挂载根文件系统之前使用虚拟策略,之后再通过 VFS 操作加载它。这避免了在引导过程中出现初始标记和访问控制条件。

security_load_policy() 现在将内存缓冲区和长度传递给内核,允许共享引导加载和后期重新加载之间的策略重新加载机制。内核中的 SEBSD 代码现在不再需要执行与读取策略相关的直接文件 I/O 操作。checkpolicy 现在在系统调用之前使用 mmap 加载策略。

SEBSD 现在强制对 System V IPC 对象和方法进行保护。共享内存、信号量和消息队列被标记,大多数操作都受到控制。示例策略已更新。

TrustedBSD MAC 框架现在控制挂载、卸载和重新挂载操作。可以使用新的 MAC 系统调用 mac_get_fs() 查询挂载点标签。lmount() 系统调用允许在挂载时显式指定挂载标签。SEBSD 策略模块已更新以反映此功能,并且示例 TE 策略也已更新。(尚未合并)

SEBSD 现在强制对 POSIX 信号量进行保护;示例策略已更新,以演示如何标记和控制信号量。这包括 PostgreSQL 的示例规则。

SEBSD 示例策略、策略语法和策略工具已更新为 8 月的 SELinux 代码版本。通过 bmake 来构建这些部分,以便不再需要 gmake。

提供文件 ioctl() MAC 框架入口点和 SEBSD 实现。

大量示例策略调整和修复。策略已更新,以允许 cron 正常运行。它已根据 FreeBSD 5.2 的更改进行更新,包括动态链接根目录。让示例策略了解 FreeBSD 的 sendmail 包装器。

调整 sysinstall 和安装过程以支持 SEBSD 部件。让 sysinstall、newfs 等了解多标签文件系统,安装 SEBSD 示例策略部分,构建策略。安装后首次启动时自动加载 SEBSD 模块。

ls -Z 打印标签,而不使用长格式。

链接

TrustedBSD ACLs 页面

联系人:Robert Watson <rwatson@FreeBSD.org>

联系人:TrustedBSD 讨论邮件列表 <trustedbsd-discuss@TrustedBSD.org>

TrustedBSD 访问控制列表(ACLs)为 FreeBSD 上的 UFS 和 UFS2 文件系统提供扩展的自由访问控制支持。它们实现了 POSIX.1e ACLs 并做了一些扩展,符合通用准则 CAPP 的要求。大部分与 ACL 相关的工作已完成,剩余任务与用户空间集成、第三方应用程序和兼容性相关。

为 Solaris/Linux 语义的原型实现了 ACL 和 umask 的结合:如果定义了默认 ACL 掩码,则用该掩码替代 umask,允许 ACL 覆盖 umask。(尚未合并)

链接

TrustedBSD 审计页面

联系人:Robert Watson <rwatson@FreeBSD.org>

联系人:TrustedBSD 审计讨论邮件列表 <trustedbsd-audit@TrustedBSD.org>

TrustedBSD 项目正在为 FreeBSD 实现符合 CAPP 标准的审计支持。在十月到十二月期间,除了对现有开发树的更新外,几乎没有在此实现上取得进展。然而,在一月,工作开始将 Darwin 审计实现移植到 FreeBSD。有关这项工作的详细信息将出现在下次报告中;更多信息可在 TrustedBSD 审计讨论邮件列表中找到。Perforce 的信息可在 trustedbsd-cvs 邮件列表中查看。

链接

TrustedBSD 文档页面

联系人:Robert Watson <rwatson@FreeBSD.org>

联系人:TrustedBSD 讨论邮件列表 <trustedbsd-discuss@TrustedBSD.org>

TrustedBSD 项目为 FreeBSD 项目实施了许多新功能。同时,它也为用户、管理员和开发人员提供文档。

新增了 mac_support.4 —— 记录了 TrustedBSD MAC 框架功能兼容性。另请参见 MAC 框架报告。

更新了 FreeBSD 安全架构,并做了修正和补充。

与 API 更改相关的各种文档更新,包括 libc/mac(3) 中与 socket 相关的 API 更改。

链接

TrustedBSD MAC 页面

联系人:Robert Watson <rwatson@FreeBSD.org> 联系人:TrustedBSD 讨论邮件列表 <trustedbsd-discuss@TrustedBSD.org>

TrustedBSD 强制访问控制(MAC)框架允许 FreeBSD 内核和用户空间访问控制策略在编译时、引导时或运行时进行适配。MAC 框架提供了通用的基础设施组件,例如与策略无关的标签,使得开发和分发新的访问控制策略模块变得更加容易。示例模块包括 Biba、MLS 和类型强制(Type Enforcement),以及各种系统加固策略。

TrustedBSD MAC 开发分支已集成至 5.2-RELEASE。

TrustedBSD MAC 框架现在对 System V IPC 对象和方法强制执行保护。共享内存、信号量和消息队列已被标记,大部分操作都受到控制。Biba、MLS、测试和存根(Stub)策略已更新以适应 System V IPC。(尚未合并)

TrustedBSD MAC 框架现在对 POSIX 信号量对象和方法强制执行保护。Biba、MLS、测试和存根(Stub)策略已更新。(尚未合并)

TrustedBSD MAC 框架的核心内核实现之前存在于一个大的文件中,src/sys/kern/kern_mac.c。现在它被分解为一系列服务相关的文件,位于 src/sys/security/mac 目录下。src/sys/security/mac/mac_internal.h 定义了框架各部分内部使用的 API、结构和变量。系统调用和注册仍发生在 kern_mac.c 中。这使得本地添加的对象类型的维护变得更加容易。(已合并)

将 mac_policy_list 拆分为两种不同的列表,一种用于存储“静态”策略模块——即在内核初始化之前加载的模块,且无法加载和卸载;另一种用于“动态”策略模块——即在引导过程中稍后加载的模块,或可以卸载的模块。仅使用静态模块时,减少同步操作,从而降低进入框架时的开销。(已合并)

引入了一个内核选项 MAC_STATIC,允许在引导时仅加载静态注册的策略模块,或者将其编译到内核中。当启用 MAC_STATIC 时,MAC 框架不需要内部同步,从而降低了 MAC 框架入口点的成本。(尚未合并)

使 mac.h 用户空间 API 定义与 C++ 兼容。(已合并)

创建了 mac_support.4,声明了哪些内核和用户空间特性支持(或不支持)MAC。(尚未合并)

删除了 MAC 分支中的过时 SEBSD 模块;从现在开始,SEBSD 模块将仅在 SEBSD 分支中进行开发。详情请参见 TrustedBSD SEBSD 报告。

在 MAC 框架之外的各种内核对象中,仅使用指向 'struct label' 的指针,并使用区块分配器分配标签存储。这使得标签结构可以更容易地改变大小,而无需更改正常的内核 ABI。这还降低了基本内核结构的非 MAC 内存开销。这也简化了在某些标签暴露到框架之外的边缘情况(例如在 execve() 中)的标签处理和存储。框架之外的包含文件大大简化,现在通常不再需要 _label.h。(已合并)

将 Giant 锁推入多个与 MAC 相关的系统调用中,因为 MAC 框架几乎不需要它。例外情况是在框架与内核中仍由 MAC 覆盖的部分交互时,并依赖 Giant 锁来保护这些结构中的标签存储。然而,即使在这些情况下,我们也可以在标签内部化/外部化/存储分配/释放之后,将 Giant 锁进一步推下去。这大大简化了基于文件描述符的 MAC 标签系统调用。(已合并)

删除了 Biba、LOMAC 和 MLS 中不需要的 mpo_destroy 方法,因为它们无法卸载。(已合并)

Biba 和 MLS 现在使用 UMA 区域来分配标签,从而提高了存储效率并增强了性能。(已合并)

修复了 mac_prepare_type() 的 bug,以更好地支持 /etc/mac.conf 中的任意对象标签定义。(已合并)

在 'struct inpcb' 中添加了标签,该结构表示网络层的 TCP 和 UDP 连接。这些标签缓存应用层的套接字标签,以便可以在不加锁应用层套接字的情况下访问标签。当套接字上的标签发生变化时,它会通过额外的入口点推送到网络层。Biba、MLS 策略已更新以反映此更改。(已合并)

修复了 SO_PEERLABEL 套接字选项,以便可以检索对等套接字标签。(已合并)

mac_get_fd() 学会了检索本地套接字标签,提供了比 SO_LABEL 和 getsockopt() 更简单的 API。mac_set_fd() 学会了处理本地套接字标签,提供了比 SO_LABEL 和 setsockopt() 更简单的 API。这也通过不将 struct label 嵌入套接字选项参数来改进 ABI,而是使用与其他对象类型相同的 copyin/copyout 例程。(已合并)

简化了与套接字选项相关的一些函数名称。(已合并)

实现了库调用 mac_get_peer(),通过 getsockopt() 与 SO_PEERLABEL 来改善网络应用程序的 API/ABI,使其能够支持 MAC。(已合并)

将 mac_create_cred() 重命名为 mac_cred_copy(),类似于其他标签复制方法,允许策略使用单个函数来实现所有标签复制方法(如果需要的话)。这也更好地符合 crdup() 行为的语义。(已合并)

支持 "id -M",类似于 Trusted IRIX。(尚未合并)

TCP 现在在响应定时等待时使用 inpcb 标签,避免在其他网络中心的代码中访问套接字层的标签信息。

修复了大量的 bug,包括与执行和重新标记相关的 MAC 测试策略中的断言修复。(已合并)

联系人:Sam Leffler <sam@FreeBSD.org>

合并 NetBSD 和 MADWIFI 代码库的工作几乎完成。这带来了新功能并改进了共享,从而支持未来的开发。已添加对 802.1x 客户端身份验证(使用 open1x xsupplicant 程序)和共享密钥身份验证(客户端和 AP 均支持)的支持,从而提高了与 OS X 等系统的兼容性。awi 驱动程序已更新为使用通用的 802.11 层,而 Atheros 驱动程序进行了大量改进,以支持硬件多速率重试。Kismet 现在可以与设备无关的 radiotap 捕获格式一起使用。所有这些工作目前仍在 Perforce 中,但应该很快提交到 CVS。

全面的 802.1x 和 WPA 支持的工作已经开始。

最后更新于

这有帮助吗?