PAM Mastery by Michael W Lucas, Chinese Review

这篇文章介绍我的关于Michael W Lucas的小技术书的观点。

1. Review

1.1. 关于技术手册

1.1.1. 我如何发现了这本书?

我是Michael W Lucas的粉丝。 虽然他的大部分书都很简单,并且覆盖了很多其他方法也可以找到的内容,但是我认为掌握电脑技巧 不应该做比必要做的痛苦的更痛。 我打算阅读他的所有关于电脑系统管理系列的所有的书。

1.1.2. 为什么我决定阅读它?

我在很久之前使用的操作系统,Slackware不包括可插拔认证模块(PAM)。 但是最新的15.0版本,终于包括这个部分。

因为我认为,用户必要可控制他的整个电脑,所以我把学习PAM放在了我的任务单里。 此外,我听说PAM是最自然的组织用户数据的加密方法。 PAM本身不做任何加密,但是PAM是一种钩子。 系统提供管理用户此钩子,是为了让他登录之前激活某些系统级别服务,比如解密。

1.1.3. 技术书与官方的说明书和网上HOWTO相比有什么特点?

官方的说明书一般既是免费的,又覆盖模块的所有的功能。 网络HOWTO通常能很清楚的指导操作者如何得到某些结果。

为什么我们还是需要额外的知识资源? 尤其是付费的?

我的回答是这样:因为只有拥有(至少一点)情节和动机的书才会给阅读者综合概述。 换句话说,官方说明书拥有宽度,但是没有“为什么我们需要本模块”的动机。 网络HOWO有动机,但是没有宽度。 而技术书同时拥有这i两种优点。

1.1.4. 通过卖出技术书作者是否会赚钱?

某天我听过一个商业想法:为学者大声阅读官方的说明书。 这是一个笑话,但是它提出了一个很好的问题,人们如何使用自己写得很清楚、很容易理解的说明书的技能赚钱?

Michael W Lucas是我鲜少见过的成功案例之一。

1.2. 关于PAM技术

1.2.1. 什么是PAM?

简单的说,PAM是一套UNIX系统插件。 它可以在用户登录系统之前执行几个操作。 按照这个几个操作结果,系统会选择允许或者拒绝登录。

“可以插拔”这里比较重要。 它的意义是:管理员会安装系统之后改变或修正系统认证方法。

但是这套程序模块不必真的实现认证功能。 从认证角度来说它会一直返回:“允许”,但是在后台执行某些额外的功能。

为什么需要这么做? 因为这样系统能按照管理员需求准备用户环境。 (比如解密他的文件。)

1.2.2. Linux的身份验证如何运营?

其实PAM本来不是Linux的分系统。 它来自Solaris,然后开源社会按照Solaris模式,实现了两个PAM版本,Linux-PAM和OpenPAM。 它们两个不是完全兼容的,但是PAM Mastery两个都覆盖。

这两个实现的重要区别是:Linux-PAM可以做更多用户环境初始化。 所以Linux-PAM管理员应该更努力计划PAM部署。

Linux-PAM最需要考虑的方面是:

  1. 如何认证用户名和密码。一般的系统只会参考默认用户名数据库:/etc/shadow,但是管理员可以增加更多不同的方法。
  2. 如何定义用户资源限制。普通的用户限制和管理员限制不一样。

1.2.3. 一般的电脑工程师如何使用PAM?

在Linux中,一般情况下,用户环境配置是在BASH初始化脚本(bashrc)里做的。 所以为了使用bashrc,它应该是存在的。

如果你的用户目录是在其他的计算机(比如NAS), 或者用户目录被加密,bashrc也是跟它加密在一起?

PAM就是答案。管理员(在私家电脑就是用户)可以找到和安装PAM模块。 PAM模块会准备好用户环境。

在大公司PAM设置不是用户可控的,但是bashrc像私家电脑一样,用户会改变。 所以如果公司(管理员)要把某些限制强加于用户上,PAM是最适合的地方。

1.2.4. 这本书是否完整介绍了PAM的功能?

我比较喜欢这本书的逻辑。

Lucas首先介绍PAM的历史,然后描述PAM标准的认证步骤。 它包括“认证”(auth),“用户”(account),“环境”(session)和“密码”(password)四个步骤。

然后他介绍四个步骤的属性和常规、实现正常登录流程的模块。(比如pam_unix.so)

后来它花费两章描述Linux-PAM和openpam的细节。 这里很重要的是Linux-PAM的错误处理过程。 它比OpenPAM详细很多,所以可以非常仔细的个性化认证逻辑。

他花费一章描述PAM错误编码,因为错误分析是调试登录流程的很重要的一部分。 其实,调试应当自己占据一章。 Lucas介绍了pam_printf,pam_exec和其他辅助调试的模块。

在这本书最后一部分,它介绍PAM和SSH的合作。 所有的管理员使用SSH远程登录,但是登录和打开SSH钥匙环需要两个密码。 PAM让你使用你的SSH钥匙环密码登录。

TODO

我感觉这本书最大的缺陷是它完全忽略了Linux的命名空间(namespace), 即使PAM也是初始化namespace的最自然的地方之一。

比如用户可能需要给某些进程限制文件系统浏览权限。

普通的Linux限制框架能拒绝访问,但是不能限制浏览。

但是如果进程管理服务程序通过PAM换身份,成为具备另外一个文件系统namespace的进程, 该进程就会有被限制的文件系统观点。

1.3. 书籍的文本风格

1.3.1. 语言

Lucas的语言很流畅。 难怪他除了技术书以外,还写侦探小说。 他会使用可笑的例子,比如(虚构的)PAM模块pam_breathalyzer,会拒绝喝醉的用户登录。

1.3.2. 难度

这本书的难度,我会说非常的低。 虽然这个话题很微妙,但是并不是很难。

1.4. 后记

1.4.1. 总结

Lucas写的大部分书覆盖的都是比较小、比较简单的话题。 但是如果你把所有的书堆积起来,它仍然会达到几十厘米的厚度,累积几千页面的页数。

电脑每年变得越来越复杂。 不能说难,因为大部分系统管理逻辑很简单,但是很多系统同时跑、同时交互一贯的会生成复杂度。

一般努力的学生会说,哎,这个很简单,那个很简单,那个更简单,但是放在一起,突然发现用一年来学习所有的内容都不够。

1.4.2. 推荐/不推荐

我可以说,如果你真的想要成为自己电脑的主人,理解PAM是没办法避免的。 也可以说为了理解PAM,本说明书是足够的。 所以我可以推荐它。 不能说这本书一定会很扩展你们的知识,但是它会扩展你的外部脑的操作逻辑一部分。

1.4.3. 联系方式

如果您在此博客或其他页面中发现任何对您有用的内容,请订阅并打赏。 请您转发、分享和讨论,您的反馈可以帮助我变得更好。

Telegram
http://t.me/unobvious
GitLab
http://gitlab.com/lockywolf
PayPal
https://paypal.me/independentresearch