如何让 sudo 自动接受密码而不提示输入?

如何让 sudo 自动接受密码而不提示输入?

我创建了一个名为 shutdown 的用户,这样每当有人使用该用户名登录时,机器就会关闭。为此,我将以下命令放在 .profile 的末尾。

exec sudo shutdown -h now

但这并没有达到目的。当用户关闭登录时,而不是机器关闭时,登录屏幕将返回。因此,用户无法登录,但同时又回到相同的登录屏幕。

我觉得的原因是因为没有提供用户关闭的密码,所以机器没有关闭。由于 exec,登录屏幕又回来了(这很好)。

现在为了解决我的工作,我需要一种方法,以便在执行上述 sudo 命令时自动获取我的密码。我查了一下man sudo,我认为-A必须使用选项。

按照该手册页,我跑了

SUDO_ASKPASS=/home/ravbholua/pass.txt

export SUDO_ASKPASS

然后为了检查它是否有效,我跑了

ravbholua@ravbholua-Aspire-5315:~$ sudo -A pwd

sudo: unable to run /home/ravbholua/pass.txt: Permission denied

从这个输出来看,这意味着这个路径文件必须运行并将我的密码作为输出提供给 sudo。我之前想到的是,它会从名为 pass.txt 的文件中获取密码,因此我在该文件中输入了密码。但不是!!!!!!!

有什么建议请!

答案1

SUDO_ASKPASS 应该是一个提示用户输入密码的二进制文件。其用途的一个示例是在 GUI 中弹出一个窗口,要求用户在使用 GUI 程序时输入密码。手册页上有以下内容:

如果没有可用终端或指定了 -A 选项,则指定用于读取密码的帮助程序的路径。

要执行您想要的操作,您可能需要编辑 /etc/sudoers 文件以允许“shut”用户能够在不指定密码的情况下运行关闭。下面的行允许“shut”用户在“ALL”计算机上运行“/sbin/shutdown -h now”和“/sbin/shutdown -r now”。

关闭全部 = NOPASSWD:/sbin/shutdown -h now,/sbin/shutdown -r now

一个更不安全的选项是使用 sudo 的“-S”选项从 stdin 读取密码并将密码回显给它,如下所示:

回显“密码” | sudo -S shutdown -h 现在

相关内容