如何在不出现提示的情况下将密码从sudo传递到sudo?

问题描述 投票:0回答:2

如何在不显示sudo提示的情况下通过stdin将密码从环境变量传递给sudo?

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

linux bash sudo
2个回答
0
投票

您可以设置一个空的密码提示:

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

0
投票

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

#!/bin/sh

printf '%s' "$PASSWORD"

命名为asker,使其可执行

chmod +x asker

执行以下操作:

SUDO_ASKPASS=./asker sudo -A echo foo

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

© www.soinside.com 2019 - 2024. All rights reserved.