PAM堆栈是否总是以root身份运行?

5

我正在编写一个 Linux PAM 模块,它使用 setuid() 将权限降低到被认证的用户。当然,这只有在 EUID 是 root 的情况下才有效。那么,无论使用它的应用程序是什么,PAM 堆栈是否始终以 root 身份运行?

1个回答

8
并非总是需要,大多数使用pam的应用程序都标记为setuid,或者具有setuid帮助程序--因为许多标准插件确实需要root权限--但如果未调用需要特权的插件,则可以在不具备root权限或升级方法的情况下使用该库。以下是一些示例:
- 使用/etc/shadow进行标准身份验证确实需要root,并且如果这些权限不可用,则读取/etc/shadow的PAM模块将失败,除非您平台的用于读取/etc/shadow的PAM模块捆绑了适当的setuid helper,并直接从PAM模块调用它。 - 使用LDAP进行认证通常不需要root,LDAP PAM模块可在没有root权限的情况下使用。
如果需要root权限并且这些权限不可用,则PAM模块失败是完全合理的,这与其他模块编写的方式一致。打算与最广泛的PAM模块兼容的软件将提供特权升级路径,即使PAM库本身不提供此类机制。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接