禁用特定用户登录的 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 和朋友的各种手册页更清晰。
我有一个 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 和朋友的各种手册页更清晰。