使用 sudo 与 libnss_switch 结合

使用 sudo 与 libnss_switch 结合

libnss_wrapper在 docker 容器的入口点实现了此功能,以便“创建”通过 传递的用户docker run -u UID。此脚本还创建了一个/etc/sudoers.d/USER文件以允许 sudo 访问。

当我尝试运行时sudo,出现错误sudo: you do not exist in the passwd database

我该怎么做才能告诉 sudo 使用$NSS_WRAPPER_PASSWD而不是/etc/passwd

编辑正如@todd-c-miller 指出的那样,这是不可能的。正如他指出,可以使用适当的 NSS 模块,例如nss-alt文件(Fedora,...)或者nss-额外用户(Debian、Ubuntu)如果文件位于其他位置则允许使用。

答案1

由于 nss_wrapper 依赖于 LD_PRELOAD,因此您无法将其与 sudo 一起使用。动态链接器会忽略设置用户 ID 可执行文件(如 sudo)的 LD_PRELOAD(使用 su 之类的程序时也会遇到同样的问题)。

有关详细信息,请参阅 ld.so 手册中的“安全执行模式”描述。

相关内容