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



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

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

您可以设置空密码提示:

printf '%sn' "$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命名的可执行文件,并从其输出中读取密码。

最新更新