作者
SolèneRapenne,已获作者翻译授权
译者
弯月,责编
张文
头图
CSDN下载自视觉中国
以下为译文:
我想通过本文分享我对OpenBSD的看法,以及对最近出现的一些不利于非Linux支持的开源代码实践的简单看法。
隐私
OpenBSD中没有遥测。这对保护隐私很有好处,没有需要关闭的报告信息功能。
默认的系统设置禁用麦克风,而且不经用户同意不能访问网络摄像头,因为默认情况下,网络摄像头是root用户的设备。
安全的Firefox/chromium
尽管有时占据市场主导地位的Web浏览器中带有的安全功能可能很繁琐,但与其他系统相比,这种做法非常重要。Web浏览器理应只能从用户定义的几个目录中检索文件,例如,默认的~/Downloads或/tmp/,以及为保证浏览器正常工作的其他几个目录。
这意味着~/.ssh、~/Documents以及其他所有目录都不应该被Web浏览器中的漏洞所利用。
Linux可以通过AppArmor实现这种行为,但这个功能不是开箱即用的,并且需要用户进行大量调整才能获得一个能用的Firefox。我曾经尝试过,确实有效,但是需要对Firefox的需求和AppArmor配置文件语法有很好的了解才能使其正常工作。
PF防火墙
我可以利用这个防火墙,快速检查台式机或服务器的规则,并了解它们的工作原理。
此外,我还使用了很多带宽管理功能来限制某些程序可以使用的带宽(如果程序对带宽并没有提供任何速率限制的话)。我觉得这一点很重要。Linux用户可以使用trickle软件来限制带宽。
稳定性
除了使用一些时髦的硬件外,OpenBSD还提供了稳定性和可靠性。我的桌面系统可以正常运行两周,每天只需要挂起并唤醒几次即可。我的服务器24小时运转,全年无休,且没有任何故障。
我的工作站很少能够连续运行两周以上,因为我使用的是最新版本,所以需要不断升级。
维护成本低廉
保持OpenBSD的最新版本机会不费吹灰之力。我每天运行两次syspatch和pkg_add-u,就可以让系统保持最新。然后在每六个月发布一次新版本时,略微做些调整。
基本上,我只需每六个月升级一次,除了升级指南中说明的一些特定说明(例如,数据库服务器的重大升级):
#sysupgrade[..wait..]#pkg_add-u#reboot
文档准确
设置全盘加密的OpenBSD系统非常容易。
使用NAT创建路由器也有手把手的文档。
每个二进制文件或配置文件都有各自的最新手册。
常见问题解答、网站和指南可以解决你所有的需求。这些资源包含的信息非常多,有时可能找到所需的信息并不容易,但是这些信息一定存在。
如果不得不离开互联网一段时间,那么我肯定选择OpenBSD系统。该系统自带的文档可以帮助我实现所需的功能。
如果要在OpenBSD上配置具有流量控制的路由器,以及在Linux上配置没有互联网的路由器,我肯定百分百希望阅读PF手册。
贡献代码很容易
这是最近的一个热门话题。我非常喜欢OpenBSD管理贡献代码的方式。我可以在系统的任何地方下载源代码,然后对其进行修改,生成差异文件,并将其发送到邮件列表中。所有这些操作都可以通过控制台使用我熟悉的工具(git/cvs)和电子邮件完成。
对于新手来说,刚开始准备贡献代码的时候可能会遇到一些困难:你可能觉得人们对你不是特别友善。实际情况并非如此。如果你发送一份差异,而且还收到了有关代码的批评(评论),则意味着有些人愿意花时间教你如何改进自己的代码。我知道有些人确实会觉得这些指摘很粗鲁,但其实是为了你好。
今年,我为OpenIndiana和NixOS项目做出了微薄的贡献,我也借此机会对比了他们对于贡献代码的处理方式。这些项目都使用github。工作流程很有趣,但是理解和掌握这些流程则非常困难。
首先,你必须创建一个github账号,创建项目,创建一个分支,然后修改代码,在本地提交代码,推送代码,最后再通过github发送合并请求。而且这只是其中一部分工作。我第一次在NixOS上尝试贡献代码时,折腾了6个月拉取请求才完成。如果有良好的文档和培训,这些困难都可以克服,而且我觉得这种方法具有一些优点,例如易于连续集成提交的代码,易于检查代码,但这对于新手来说确实是一道门槛。
高质量的软件包
我的观点可能有些偏颇,但是我确实认为OpenBSD软件包的质量非常高。大多数软件包在默认设置下都能正常使用。
需要特定说明的软件包都包含一个README文件,说明如何设置服务或可能出现的问题。
即使缺乏贡献者和时间,我们缺少一些软件包(除了一些软件包过于依赖Linux而不易于移植),但主要软件包都是最新的,而且运行良好。
下面,我想利用这次机会,抱怨一下开源代码发展趋势中浮现的几个苗头。
仅通过flatpak/docker/snap分发的程序确实对Linux很友好,但对于非Linux系统充满了敌意。它们常常利用只有Linux才有的功能,并根据Linux发行方式而构建系统。nodeJS程序:这些程序由数百个甚至数千个即使在Linux上也很脆弱的库组成。在OpenBSD上运行这些程序非常痛苦。有些节点库嵌入了rust程序,而有些会下载和使用静态二进制文件而且还没有后备解决方案,或者甚至尝试编译源代码,而不是在安装时在系统中使用该库/二进制文件。使用git进行构建的程序:我们的构建过程尽力保持整洁,这个专用的构建用户没有网络访问权限,而且不会运行这些git命令。让构建系统在构建过程中运行git来下载源代码是毫无道理的?我明白以上三点都是为了减轻开发人员的负担。但是,在编写和发布软件的时候,是不是应该考虑一下非Linux系统用户的感受?如果你想改善支持的话,就应该大胆地社交媒体上询问一下,是否有人愿意在不同的平台上构建你的软件。我们非常喜欢为BSD着想的开发人员,他们不会拒绝为OpenBSD提供特定的补丁程序。
我希望看到的改善
以下是我个人的观点,并不代表OpenBSD团队成员的观点。我希望OpenBSD在以下方面有所改善。
为独立的输入/输出设备提供Sndiod支持(我有一个USB麦克风和一个USBDAC,但我无法在音频会议中使用它们)。注:在本文发布后,我收到了一个补丁(