![如何使 sudo -u 不需要密码](https://linux22.com/image/644274/%E5%A6%82%E4%BD%95%E4%BD%BF%20sudo%20-u%20%E4%B8%8D%E9%9C%80%E8%A6%81%E5%AF%86%E7%A0%81.png)
我正在使用 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