# 访谈：Michael W Lucas

* 原文链接：[Interview: Michael W Lucas](https://freebsdfoundation.org/wp-content/uploads/2020/07/An-Interview-With-Michael-W-Lucas.pdf)
* 作者：**Allan Jude & Benedict Reuschling**

摘自 BSDNow，第 329 集，录制于 2019 年 12 月。Allan Jude 和 Benedict Reuschling 采访了 Michael W Lucas。

![](https://github.com/user-attachments/assets/3671ca6a-c18c-4e61-950c-f1e9ffb1e7a0)

**BENEDICT REUSCHLING**：Michael W Lucas 曾在这个节目中接受过几次采访。他上回接受采访是几个月前，我们认为您可能想了解他最近在做什么，以及他接下来的计划。以下是这次采访，享受吧！

**REUSCHLING**：欢迎，Michael！您最近发布了本新书，我相信听众们会想了解一下。能告诉我们这本书的内容吗？我听说它是关于 sudo 的。

![](https://github.com/user-attachments/assets/0b55cfc3-6fbd-4998-9af1-508f26982164)

**MICHAEL W LUCAS**：感谢邀请我参加。是的，这本新书是《Sudo Mastery》的第二版。除非您使用 LDAP，否则 sudo 并没有进行过重大变化。但它做了很多小改动，因此，基本上这第二版就是为了跟上这些变化，确保信息准确反映今天的 sudo。我还深入探讨了一些推荐的配置更改。例如，sudo 现在有像校验和验证这样的功能，以确保二进制文件没有被篡改。当然，没人会手动计算每个二进制文件的校验和，更别提每次修补时还要更新它们了。所以，我为流行操作系统编写了一些脚本，用于自动计算所有文件的校验和。

**REUSCHLING**：哦，这真是很有用。

**LUCAS**：确实如此。如果您怀疑系统可能遭到外部篡改，校验和验证可能是一个解决方案。而且现在有一些新的调用方法。以前他们有一个工具，可以将 sudoer 文件转换为 LDAP 格式，那非常有用。但现在他们有了一个通用工具，可以将 sudoers 文件与 LDAP 以及 JSON 格式之间相互转换。所以，您可以将 sudoers 文件放入任何您想要的格式。您可以将它传递给审计程序，确保一切符合您的要求。当然，书的封面也非常漂亮。

**JUDE**：确实！您能解释一下那本美丽封面的不同版本吗？

![](https://github.com/user-attachments/assets/18e12741-c1d2-427b-a5ef-e99a1c07e025)

**LUCAS**：如果您购买电子书，您将得到一个非常漂亮的封面，基于经典的“狗玩扑克牌”图像。而且既然有人问过，是的，确实有理由说明为什么其中一个 BSD 穿着黑色高领毛衣。还有另一个 BSD 正在悄悄给他递一张王牌。

如果您购买平装本，您会看到封面有一个更完整的版本，硬封面则会覆盖整个封面。如果您有精装本，封面上的封面纸会延续艺术图案到内侧翻页。所以，如果您在寻找既有趣又好看的书，这本书一定能满足您的需求。我对它的效果非常满意。

**JUDE**：那么，您有一张封面艺术，随着版本的增加增加再增加。接下来您打算做什么呢？

**LUCAS**：我一直在思考接下来该做什么。我不至于束手无策，因为我有很多想法。但我刚刚完成了一个非常庞大的项目——《jail 书》*FreeBSD Mastery Jail*。为了写这本书，我写了六本书。那是一个巨大的项目，所有的一切都是为了达到某个特定的目标。此外，在完成这个过程中，我还写了几本小书。我现在没有一个大计划，但我正在努力想出一个总体目标。无论我做什么艺术、书籍之类的，都将为这个目标服务。所以，我确实有一些想法，感谢大家的关注，但我不打算让整个互联网都给我发建议。

**REUSCHLING**：现在可能已经太晚了！\
**JUDE**：说到《jail 书》，几乎所有使用 FreeBSD 的人都会从中学到很多东西，甚至像我这样已经使用了 jail 和 FreeBSD 多年的用户。书中的内容比我脑袋里的还多！在写这本书时，有什么令您惊讶的事情吗？

**LUCAS**：我从 1995 年末开始使用 FreeBSD，做这项工作迫使我回过头去复习我所知道的一切——而且自 1995 年以来有些东西发生了变化。我学到了很多关于文件系统的小细节。您可以用 DEVD 做一些非常了不起的事情，甚至 nullfs 也很有用。现在 jail 中有些控制非常精细，真是令人惊讶。我记得在过去，System 5 IPC 在 jail 中根本不可能使用，现在你可以为每个 jail 启用/禁用它，甚至可以单独为每个 jail 启用 System 5 IPC 的功能。这是我知道它被实现的原因，因为人们需要它，但我有点害怕去了解为什么有人需要 System 5 共享内存——但不需要信号量。

**JUDE**：是的，我认为过去的部分原因是，IPC 的命名空间是统一的——你可能希望某个 jail 只能看到其中的一部分。尽管几年前，当我们最终得到了命名空间支持，能够让你在两个不同的 jail 中运行 Postgres，并且它们不会互相覆盖，这个问题可能就不那么严重了。

**LUCAS**：我起初是这么想的，但这个功能后来得到了演变。所以，这是一种设计决策。我翻阅了 20 年的历史，事情发生的顺序真的非常启发人。这是迭代开发的一个绝佳例子。我的意思是，jail 在 1999 年和 2000 年救了我不少麻烦，它们在过去的几十年里悄悄地发展了起来。简单来说，jail 很难。它们是系统管理中所有知识的结晶。你必须了解文件系统，必须了解升级。如果你有很多 jail，你真的需要一些编排或自动化工具。这些事情很快就会变得非常复杂，因为突然间，你可以在一台主机上运行 500 台虚拟机。你必须管理这 500 台虚拟机，而这真的很糟糕。没有人愿意做这件事。

**REUSCHLING**：很多人最终会在需要使用 jail 时抓起这本书。

**LUCAS**：是的，它已经发布了。需要它的人会找到它。不需要的人嘛，他们的生活比我们其他人简单。

**JUDE**：哦，你知道，当我把 ZedFS 和 jail 结合起来时，我做得有点过头了，直到我需要一个系统，让客户能够上传文件，但确保他们只能上传自己的文件等等。

**LUCAS**：是的，像这样的需求我一定会放在一个 jail 里。任何面对公众的东西，我都想放到 jail 里。

**JUDE**：是的，ZedFS 和 jail 能如此契合真的很有趣，考虑到，一方面，Sun 在开发 ZedFS 时将其与 zones 集成，zones 有点像 jail。但它们也有很大的不同，事实证明我们能够将它们很好地对接，我觉得这真的很令人高兴。

**LUCAS**：是的，我也觉得不错。我认为，使虚拟化能够意识到文件系统的问题并非 zones 独有。它们只是设置了一个可以委托的文件系统，并且可以具有更低级别的权限。

**JUDE**：真的很有趣，你可以做两者的结合。你可以将一个数据集放入 jail，基本上意味着你将它委托给 jail 中的 root。但然后 jail 中的 root 可以再委托给该 jail 中的个别用户。

**LUCAS**：确实非常棒。

**JUDE**：嗯哼

**REUSCHLING**：有一些用例你通常一开始不会想到，但后来你会发现，哦，是的，这是可能的，我也能看到它的应用场景。

**LUCAS**：是的，真正的系统管理就是看你拥有的工具，弄清楚如何将它们拼接在一起解决问题。而 ZedFS 是一个很棒的工具。

**JUDE**：那么，接下来，你是如何意识到世界需要一本关于简单网络管理协议（SNMP）的书的呢？

**LUCAS**：哦……因为它无处不在，而且现有的书都没让我激动。SNMP 其实并不像你想的那么难。

**REUSCHLING**：嗯，那就是“S”（简单）的意义吧，对吧？

**LUCAS**：是的，没错。其实，协议本身非常简单。它有七个部分——就这些。问题在于所有的供应商和实现者对这七个部分所做的事情。无论你多么具体地编写标准，总是有解释的余地。我们需要的不是一本讲它有多么辉煌的书，而是一本讲“这些是组成部分，现状是这样，这里是你如何弄清楚这些东西的书”。

当它正常工作时，它是非常棒的。人们经常用 SNMP 进行监控。SNMP 非常适合网络管理。即使是今天，在与人们交谈和做研究时，还有人说，如果你有一个非常饱和的互联网连接，你可能需要向远程设备发出命令来解决问题。我们有 SNMPv3，很多人对它感到害怕。经过深入了解，我认为，我们只是倒着教它。有时候，它是你唯一的解决方案，我不建议你围绕 SNMP 构建整个网络。但我会说，无论你是网络管理员还是系统管理员，你都需要知道它。有时候你需要那种特定的工具，或者一个工具能解决那些用其他方式很难解决的问题。关于它有太多的困惑了。

**JUDE**：是的，你知道，它绝对是我工具箱里的一个工具，我不羞于承认我从来没有真正学过它。我只是通过摸索，勉强搞清楚了我需要从中获得的东西。

**LUCAS**：是的，你可以通过两个数据包找到你需要的信息。

**JUDE**：对。当我每 30 秒运行一次时，它比使用一些更沉重的东西要好得多。

**LUCAS**：顺便说一下，我学到的一些东西是，你可以通过 SSH 运行 SNMP 查询。

**JUDE**：哦哦！

**LUCAS**：我没有涵盖这一点，因为书已经够大了。但它确实是一些问题的可能解决方案。如果你已经有了证书授权基础设施，你可以通过 TLS 运行 SNMP。

**JUDE**：那还会通过 UDP 吗，还是在这种情况下会转为 TCP？

**LUCAS**：它可以使用任何一种。DTLS 是在 UDP 上运行的 TLS。

**JUDE**：是的，用于数据报。

**LUCAS**：这里有很多选择。如果我能成功地引导人们，让他们能够把学习协议和学习供应商的奇怪配置分开，那将比一切都值得。

**REUSCHLING**：在写这本书的研究过程中，你还学到了关于 SNMP 的什么？

**LUCAS**：嗯，所有的事情都很糟糕，但这并不令人惊讶。让我们看看，很多人用它做了有趣的事情。有来自 MySQL、Postgres 和 Apache 的代理，可以直接插入到 net SNMP 中。所以，你可以轻松地从各种软件中提取统计信息。它是可以扩展的。你可以让 SNMP 在服务器上运行任意命令。这可能是好事，也可能不是，取决于你想要复杂到什么程度。

**JUDE**：还有图表趋势等等。

**LUCAS**：哦，是的，是的。当然，监控这些东西的问题在于，你不需要监控它们，直到它们完全出错——我喜欢系统管理！

**JUDE**：回头看，你的年度计划进行得如何？

**LUCAS**：嗯，我有很多想做的事情。大约一年前，他们切除了我的一半甲状腺，过去几年里一直困扰我的一些神秘健康问题都解决了。这太棒了！这太好了！这意味着我可以做所有事情。然后我又一次艰难地学到，我可以做很多事情，但不能做所有事情。我原本打算写更多的文字，但我接受了太多的旅行邀请，而旅行让我很不舒服。所以，我决定少旅行，多写书。我靠写字谋生。这是我一直想做的事情。我很幸运能够做到这一点，我只需要站在键盘前，做好工作。

**JUDE**：那说到这，你能告诉我们你接下来的计划吗？

**LUCAS**：我有几个关于技术书籍的想法。DNSSEC 的书需要更新。而且随着 DNS over HTTPS 越来越流行，这部分也应该加入其中。

**JUDE**：尤其是现在我们正处于一个大多数人都在使用它，却不理解这些内容的时代。

**LUCAS**：是的。

**JUDE**：人们正在做出一个知情的决定，使用 DOH。

**LUCAS**：没错。对于生活在审查制度下的人们来说，这是一个很好的即时解决方案。然而，专制和审查国家不会容忍这类问题太长时间。

**JUDE**：是的，我认为最危险的部分是，它并不是完整的解决方案。如果你仅仅依赖它，你会遇到问题。

**LUCAS**：是的，确实会遇到很多问题。但我可以写一本关于如何设置它的书。电子邮件也可能是一本有趣的书。如今几乎没有关于如何设置完整电子邮件解决方案的书籍。所以，这是一个可能性。

**JUDE**：是的，做 DKIM 还不算太难，但新的 DMARC 相关内容让我非常困惑。

**LUCAS**：我认为电子邮件隐私基本上已经丧失了。即使你自己运行邮件服务器，你也很可能与使用大型商业邮件公司的某些人通信。但尝试自己运行邮件服务器仍然值得，这是我一直在关注的一个话题。我也开始考虑一些 OpenBSD 的事情——每次我提到写一本 OpenBSD 的书时，人们都会跳起来，想要下一本《Absolute OpenBSD》。让我说，没有明确的时间表——我很高兴你们想要，它会来的。

**JUDE**：那《git commit murder》的续集呢？

**LUCAS**：它在我的计划之中。我曾在生病时尝试写它。目前，我正努力完成 SNMP 书。非虚构类书籍带来了收入，我很感激有这本书。我并不是看不起它，但我还没有足够多的小说来通过写 git commit 这书谋生。我完成 SNMP 后会很高兴的。

**REUSCHLING**：今天有什么最后的想法吗，Michael？

**LUCAS**：我要感谢所有购买书籍的人，感谢你们觉得这些书有帮助。如果你能坚持听完这次采访并且我喋喋不休地说这么久，谢谢你们。

**REUSCHLING**：感谢你，Michael，感谢你持续的写作和你的书籍。

***

**P.S.** 今天，Lucas 发现他有关减少旅行的说法让人不寒而栗。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://freebsd-journal-cn.bsdcn.org/20200506-wang-luo-xing-neng/lucas.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
