禁用特定用户登录的 sudo 密码

Disable sudo password for specific user login

我有一个 bash 脚本执行一些 PostgreSQL 作为

sudo -i -u postgres psql <<EOF > /dev/null
--SQL CODE
EOF

sudo 要求我输入当前用户的密码,我想禁用它。我不想通过 sudo -S 在脚本中提供密码。我知道我可以使用 visudo 禁用 sudo 的密码,但是我需要指定禁用它的命令(我不想全局禁用它)。如何禁用 sudo -i -u postgres 的 sudo 密码?

您可能喜欢 sudoers 文件中的一行,如下所示:

script_user ALL = (postgres) NOPASSWD: /usr/bin/psql

该行中的各个项目如下:

  • script_user:使用 bash 脚本的(标准)用户(即您的用户帐户)
  • ALL:特殊变量,这里是表示所有主机的位置。您可以尝试将其限制为例如localhost如果你想要
  • (postgres):用户将 运行 命令作为。即-u选项指定的用户
  • NOPASSWD: 特殊变量表示下面的命令不需要密码(对于这种用户、sudo 用户和主机的组合,当然)
  • /usr/bin/psql:允许的特定命令。这也可以是 comma-separated 个命令列表,或 ALL。 (显然路径在您的机器上可能不同。)

Whosebug 上的相关问题和答案有点分散,似乎没有完全回答您的具体问题,但我遇到了 Abhijit Menon-Sen 的 overall nice write-up on this topic,我发现了比 sudo 和朋友的各种手册页更清晰。