如何设置SUDO_ASKPASS环境变量?

use*_*434 4 java shell sudo

设置SUDO_ASKPASS环境变量意味着什么?你怎么做呢?我在哪里申报?

我试图使用shell脚本在几分钟后关闭我的计算机并使用java启动此脚本.

jan*_*arc 9

所以我不确定我会用$SUDO_ASKPASS它.基本上,值$SUDO_ASKPASS是一个可执行文件,在调用时会将密码吐出标准输出.因此,如果您的密码是'foo',您可以编写一个shell脚本:

#!/bin/bash
echo 'foo'
Run Code Online (Sandbox Code Playgroud)

把它放进去~/bin/pw.sh.然后,您将设置环境变量并执行以下命令:

SUDO_ASKPASS=${HOME}/bin/pw.sh sudo shutdown -h now
Run Code Online (Sandbox Code Playgroud)

那个例子假设你在达尔文; shutdown在不同的操作系统上表现不同.

这样做(更安全)的更聪明的方法是使用NOPASSWD参数/etc/sudoers.我们会添加这样一行:

jane ALL=NOPASSWD: /sbin/shutdown
Run Code Online (Sandbox Code Playgroud)

这再次假设你在Mac上.你的名字是简.改变这一点.这样,sudo在发出命令时不会要求输入密码/sbin/shutdown.(正确)编辑sudoers的命令是visudo.