command line

当你登录到shell时,什么程序处理对证书的评估?

当你第一次启动时,迎接你的是黑屏和闪烁的提示的温暖光芒,那是什么程序?什么程序负责评估证书?或者说,它是源代码的哪个组成部分?我可能把自己搞糊涂了,但我认为各种用户外壳是在用户认证后加载的。

...这可能意味着 bash 在单用户模式下启动,然后 bash 检查凭据并启动用户 shell?(我认为这就是它的工作原理)

(我有兴趣在凭证检查过程中添加一个功能,但我正在查看 bash 源代码,但我不确定从哪里开始。)


我自己只有一个基本的了解,但是我会发布这个让你开始:

首先,你不是登录到一个shell,而是登录到一个(虚拟)终端。

  • getty 程序打开 tty 端口,提示输入登录名并调用登录程序(默认为 /bin/login - 尽管 Linux 的 agetty 可能配置为使用非标准登录程序)

  • 登录程序执行认证和会话设置,包括初始化环境和调用用户的登录外壳。

在当前的 Ubuntu 系统中, getty 作为 systemd 服务进行管理(例如虚拟终端 tty1 的 getty.service ),而 login 使用 Pluggable Authentication Modules (PAM) 子系统进行身份验证 - 特别是, pam_unix 模块是“用于传统密码验证”。

对于您的既定目标(“向凭证检查过程添加功能”),您可能希望查看实现自定义 PAM 模块,并将其插入 PAM 堆栈中的适当位置;此处描述了一个模板:

  • 在PAM会话中对用户进行外部认证/在PAM会话中对用户进行认证

See also: