如何告诉 SSH 在 PAM 之后而不是在重新映射用户之前设置 uid

How to tell SSH to setuid after PAM and not before to remap users

我正在研究由PAM模块和NSS模块组成的radius认证方案。

流程是这样的:

现在,我的问题如下。 OpenSSH 服务器将在 PAM 之前读取 NSS。

这意味着流程是这样的:

现在这个错误只在第一次登录时发生,因为在第二次登录时 NSS 将有缓存数据并且 return 在第一次调用时纠正用户。

但这仍然是一个问题,首先因为我不想每次第一次登录都落到错误的用户名下,其次如果ben被管理员权限删除,他的下一次登录仍然会被映射由于我的 NSS 模块的 NSS 缓存,可以通过 SSH 进行管理。

我无法在第一次 NSS 调用时查询映射,因为从 radius 查询映射需要成功登录。

我有一些线索,但我真的很想对这个问题有一些见解。

我的线索是:

我最终将用户的 shell 更改为一个 setuid 包装器,该包装器将权限分配给预期用户。

代码在这里:https://github.com/kuon/radius-auth-virtual