如何使 sudo -u 不需要密码

如何使 sudo -u 不需要密码

我正在使用 ansible 和 vagrant,并且 ansible 正在尝试以 postgres 用户身份使用 sudo 来运行一些 postgres 命令。

以 vagrant 用户身份运行的 Ansible 似乎运行了类似sudo -u postgres psql

失败并显示错误消息Missing sudo password

我使用同一个 vagrant 用户 ssh 到虚拟机并尝试sudo -u postgres psql,果然它会提示输入密码。但有趣的是,sudo su postgres切换到 postgres 用户时无需密码。

为什么sudo -u不需要密码呢sudo su

/etc/sudoers.d/ 中有一个名为 vagrant 的条目,其内容如下:

%vagrant ALL=NOPASSWD:ALL

答案1

因为您尝试模拟用户 postgres,而您的 sudoers 文件允许您模拟来自系统组 vagrant 的用户 root。当您使用时,sudo su您也会模拟 root。

添加此内容:%vagrant ALL = (postgres) NOPASSWD: ALL

相关内容