如何在不出现提示的情况下将密码从环境变量传递给 sudo?

How to pass password to sudo from environment variable without prompt appearing?

如何在不出现 sudo 提示的情况下通过标准输入将我的密码从环境变量传递给 sudo?

我试过 $ echo $PASSWORD | sudo -S echo foo 但是 returns [sudo] password for mithic: foo。 总是使用 -n 标志 returns sudo: a password is required(除非我最近输入了正确的密码)。

可以设置空密码提示:

printf '%s\n' "$PASSWORD" | sudo -p "" -S echo foo

如果它真的在环境中,我建议使用 -A 选项而不是 -S。编写一个非常小的脚本,将值写入标准输出。

#!/bin/sh

printf '%s' "$PASSWORD"

将其命名为 asker 并使其可执行

chmod +x asker

执行以下操作:

SUDO_ASKPASS=./asker sudo -A echo foo

-A 使 sudo 运行 成为 SUDO_ASKPASS 命名的可执行文件,并从其输出中读取密码。