如何使sudo -u不需要密码

我使用ansible与vagrant和ansible试图sudo作为postgres用户运行一些postgres命令。

作为stream浪用户运行的Ansible似乎运行sudo -u postgres psql

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

我使用相同的stream浪使用者ssh进入虚拟机,并尝试使用sudo -u postgres psql并确定它提示input密码。 有趣的是, sudo su postgres切换到postgres用户没有密码。

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

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

 %vagrant ALL=NOPASSWD:ALL 

因为当你的sudoers文件允许你从系统组vagrant中模拟用户root的时候,你试图模拟用户postgres。 当你使用sudo su你也模仿root。

添加这个: %vagrant ALL = (postgres) NOPASSWD: ALL