当您登录到 shell 时,哪个程序处理凭据的评估?

j0h*_*j0h 10 command-line bash source-code login

当你第一次启动时,你会看到黑屏的温暖光芒和闪烁的提示,那是什么程序?什么程序处理证书评估?或者更确切地说,它是源代码的哪个组成部分?我可能自己很困惑,但我认为各种用户 shell 是在用户身份验证后加载的。

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

(我有兴趣在凭据检查过程中添加一项功能,但我正在查看 bash 源代码,并且不知道从哪里开始。)

ste*_*ver 10

我自己只有初步的了解,但是我将发布此内容以帮助您开始:

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

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

  • 登录程序执行身份验证和会话设置,包括初始化环境和调用用户的登录 shell。

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

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

也可以看看: