4.2. SELinux 的发展历史和背景信息
最初,SELinux 是美国国家安全局 (NSA )[2] 和其它一些机构的一个开发项目。它是 Flask 操作系统安全结构[3]的一个实现。NSA 使用 Linux Security Modules (LSM ) 结构把 SELinux 集成到 Linux 的内核中。Linus Torvalds 希望使用模块化的方法来实现系统的安全性,而不只是简单地把 SELinux 放入内核。因为这个原因,LSM 被创建来把 SELinux 集成到内核中。
在最初的阶段,SELinux 使用存储在一个不被使用的 ext2 inode 区域中的persistent security IDs (PSIDs)。这些标识(如 non-human-readable)被 SELinux 对应到一个安全上下文标识。但是,这需要改变所有文件系统的类型来支持 PSIDs,因此,这并不是一个可扩展的解决方案,也并不被 Linux 内核的上游社区所支持。
接下来,SELinux 发展为 Linux 内核 2.4.<x> 系列的一个可加载的内核模块。这个模块把 PSIDs 保存在一个普通文件中,因此 SELinux 可以支持更多的文件系统。这个解决方案从性能角度来看并不是最好的,而且在不同的平台上并不统一。最后,SELinux 代码被上游社区集成到 2.6.x 内核中,它完全支持 LSM 并在 ext3 文件系统上有 扩展的属性(extended attributes) (xattrs )。SELinux 改为使用 xattrs 来存储安全上下文信息。xattr 的名称空间(namespace)可以使同一个系统中存在的多个安全模块相互独立。
被上游社区所接受的与内核相关的工作,以及后续的 SELinux 开发,是 NSA、红帽和 SELinux 开发社区通力合作的结果。
更多关于 SELinux 的发展历史可以通过访问 http://www.nsa.gov/selinux/ 获得。
[2] NSA 是美国联邦政府的信息情报部门,它负责与信息和情报相关的安全工作。您可以访问 NSA 的网站 - http://www.nsa.gov/about/,来获得更详细的信息。
[3] Flask 是从一个把 Distributed Trusted Operating System (DTOS ) 集成到 Fluke 研究操作系统中的项目发展出来的。Flask 是这个结构的名称,它是在 Fluke 操作系统上实现的。