我正在编写一个用于Linux PAM的模块,该模块使用setuid()
向正在验证的用户授予特权。当然,这仅在EUID为root的情况下有效。那么,PAM堆栈是否始终以root用户身份运行,而不管使用它的应用程序如何?
最佳答案
并非总是如此。大多数使用pam的应用程序都标记为setuid或具有setuid帮助器(就像许多标准插件都需要root一样),但是如果没有调用任何插件都需要特权,则可以使用没有root特权或升级方法的库。
一些例子:
使用/etc/shadow进行
如果PAM模块需要root特权并且这些特权不可用,那么这完全是公平的(并且与其他模块的编写方式保持一致)。旨在与最广泛的PAM模块阵列兼容的软件将具有可用的特权升级路径,即使PAM库本身不提供这种机制也是如此。
关于c - PAM堆栈是否始终以root用户身份运行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24151556/