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

我正在为Linux PAM编写一个模块,该模块使用setuid()将权限删除给正在进行身份验证的用户.当然,这只有在EUID是root的情况下才有效.那么,PAM堆栈是否始终以root身份运行,无论应用程序使用它?

解决方法:

并非总是如此.大多数使用pam的应用程序都标记为setuid,或者有setuid帮助程序 – 因为许多标准插件确实需要root用户 – 但如果没有调用的插件需要权限,则可以使用没有root权限的库或升级方法.

一些例子:

>使用/ etc / shadow的标准身份验证确实需要root,如果这些权限不可用,读取/ etc / shadow的PAM模块将失败,除非您的平台的用于读取/ etc / shadow的PAM模块为此捆绑了一个合适的setuid帮助程序并调用它直接来自PAM模块.
>使用LDAP进行身份验证通常不需要root,并且LDAP PAM模块可以在没有root权限的情况下使用.

完全公平 – 并且与其他模块的编写方式一致 – 如果PAM模块需要root权限并且这些权限不可用,则会失败.旨在与最广泛的PAM模块阵列兼容的软件将具有可用的权限提升路径,即使PAM库本身不提供这样的机制.

上一篇:[模板]PAM


下一篇:Linux CentOS 7系统安全控制详解(内容较多,可分次食用)