我正在使用 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