当前位置: 代码迷 >> 综合 >> 选择 FreeBSD 而不是 Linux 的技术性原因
  详细解决方案

选择 FreeBSD 而不是 Linux 的技术性原因

热度:79   发布时间:2023-11-30 10:43:04.0

干净的分离
在 FreeBSD 的设计方式下,不同的组件组合在一起的,处理配置和调优,以及多年来开发和改进的所有工具,使得使用 FreeBSD 是一件很特别的事情。
从 1998 年开始,我所使用的大多数 GNU/Linux 发行版,你都会有一种 “不匹配 “的感觉。
举个例子,Debian GNU/Linux 有 Debian 的做事方式。Debian 的方式是通过使用一套特定的配置管理工具和补丁来使第三方软件符合 “Debian 方式 “的设置。虽然这在某种意义上可以统一你在 Debian 发行版上的做事方式,但它却打破了上游的配置,这让人非常烦恼。特别是当某些东西不正常,或者上游文档中描述的方式与 Debian 上的设置不一致时,这个问题就更严重了。这种方法的另一个问题是,一些第三方软件,甚至是发行版的核心元素,比如 systemd,都不能强行按照 “Debian 的方式 “去做。其结果是,系统的某些部分以 “Debian 方式 “运行,而其他部分则不是。Debian GNU/Linux 采用了 systemd,但同时默认的网络部分是 Debian 特有的。有时你必须禁用或移除 Debian 特定的东西才能让 systemd 特定的东西工作。
在像 Arch Linux 这样的发行版上,这个问题是不存在的,因为不存在 “Arch 方式 “这样的东西。Arch Linux 发行版希望第三方软件能够像上游一样,所以除非绝对必要,否则他们不会改变任何东西。这很好,因为这意味着上游文档与软件相匹配。然而,这种方法的一个问题是,由于第三方软件确实以不同的方式处理事情,你可能最终会得到一个软件运行不统一的系统。然而,在系统管理方面,我个人还是更喜欢 Arch Linux,而不是 Debian,因为 Debian 有时几乎会修改全部的第三方软件。
Ubuntu 就更糟糕了。因为它是基于 Debian 的,所以运行时使用了很多 Debian 的工具和设置,但同时也有 “Ubuntu 方式”,即在 Debian 的基础上改变了一些东西,然后在这些基础上又增加了一层,即所谓的用户改进工具层,这有时会使 Ubuntu 出现难以理解的故障——即内部错误。
在 FreeBSD 上,你会马上发现,你所面对的是一个非常完善的系统。
内核和基本系统与第三方应用程序是完全分离的,基本系统的配置进入 /etc,而所有第三方的配置进入 /usr/local/etc 。所有你可以配置的东西,所有你可以调整或设置的东西都在 man 手册中有很好的记录。
你所有的东西,从 rc 实用程序(也就是被 init 调用后控制自动启动过程的命令脚本)到命令脚本,再到 sysctl 内核管理工具,所有不同的系统配置,以及其他所有的东西都放在一起,而且存储的很好。
我不知道该如何准确地表达这一点,但因为 FreeBSD 的管理方式,是作为一个完整的操作系统和项目来管理的,而不是作为一堆不同的项目被粘合在一个发行版中,所以一切都考虑得非常周全。它是基于多年经验上的,当事情发生变化时,它们会为了整个社区的利益而变化,并且有很多来自真实使用案例和行业问题的反馈。
要真正理解这一点,最好的方法之一是阅读 Michael W. Lucas 的《 Absolute FreeBSD 》一书。他不仅解释和描述了书中涉及的所有技术问题,而且还抓住了重要的历史背景来解释为什么事情会是这样的。

文档
有些人不认为文档是采用某项技术 /工具原因的一部分,但文档属于它所描述的技术的集成部分。糟糕的、过时的和缺失的文档应该被认为是一个 Bug 。
FreeBSD 的文档是随系统附带的,所以你不必在网上搜索。基本系统的 handbook 手册质量很好,而且是专门为 FreeBSD 编写的。您所需要的大部分内容都在系统中。
FreeBSD 也有 FreeBSD 手册,它涵盖了 FreeBSD 的安装和日常使用所需。FreeBSD 手册可以在安装过程中本地安装。这本手册偶尔会有一些过时的部分,因为这本书是许多人持续工作的结果,但它一般都会更新,而且写得很好。

安全
通常情况下,被入侵的不是操作系统,而是运行在操作系统上的程序。在某些情况下,被入侵的程序可以与操作系统进行交互,从而也会影响到操作系统。保护操作系统的安全意味着您要确保计算机的资源只被授权的人用于授权的目的。
FreeBSD 经过了彻底的审计,以消除缓冲区溢出和其他无数的安全问题,此外,FreeBSD 还提供了许多工具和选项来帮助您保护系统免受攻击。
我不可能在这篇文章中提供一份详尽的选项和可用功能的清单,因为 FreeBSD 的安全主题可以轻松地写满一本书。如果您想更深入地了解 FreeBSD 的一些安全特性,我强烈推荐 Michael W. Lucas 的《 Absolute FreeBSD 》一书。
不过,我还是要提几件事情。

在安装 FreeBSD 的过程中,安装程序提供了一系列可以启用或禁用的选项。

隐藏其他 UID 进程
隐藏其他 GID 进程
隐匿已被囚禁的进程
隐藏信息缓冲区
禁用进程调试
随机化进程 ID
禁用 syslogd 网络
禁用 Sendmail
安全控制台
非可执行堆栈和堆栈保护
大多数 FreeBSD 的内核级安全设置都可以在 security.bsd sysctl 树中找到,而且每隔几个月就会有更多的设置被添加进来。您可以运行 sysctl -d security.bsd 来显示您的 FreeBSD 安装中的可用选项。
#sysctl -d security.bsd
security.bsd: BSD security policy
security.bsd.stack_guard_page: Specifies the number of guard pages for a stack that grows
security.bsd.unprivileged_get_quota: Unprivileged processes may retrieve quotas for other uids and gids
security.bsd.hardlink_check_gid: Unprivileged processes cannot create hard links to files owned by other groups
security.bsd.hardlink_check_uid: Unprivileged processes cannot create hard links to files owned by other users
security.bsd.unprivileged_idprio: Allow non-root users to set an idle priority
security.bsd.unprivileged_proc_debug: Unprivileged processes may use process debugging facilities
security.bsd.conservative_signals: Unprivileged processes prevented from sending certain signals to processes whose credentials hav