我知道使用sudo
和ssh
工具可以使用 GUI 在脚本中询问密码,方法是分别设置SUDO_ASKPASS
和SSH_ASKPASS
变量,在变量中我们指定一个图形工具来询问密码。
但是如果我使用任何其他工具它可能会要求输入密码,例如,ksu
它似乎不支持上述任何模式?(我在互联网上搜索过,但没有找到类似的东西KSU_ASKPASS
,而且ksu
似乎没有任何选项支持这一点)。
答案1
我想我最终找到了解决方案......
例如,假设您想要列出/root/
文件夹的内容,并且为了执行此操作,您需要 root 访问权限,并且只能使用该ksu
工具(无sudo
/ su
/ ssh
)。
首先,您使用图形工具询问密码zenity
,然后将其存储在局部变量中。
pw=$(zenity --entry --title="Password needed" --text="Enter password:" --hide-text)
之后,您可以使用以下命令ls /root/
运行。ksu
echo $pw | ksu -e /bin/ls -a /root/
解释:
通过
echo
结合使用,|
您可以将密码传输到ksu
,因为它通过标准输入要求输入密码。从标准输入读取密码后,
ksu
执行ls
使用-e
选项指定的命令,并/root/
通过选项作为参数传递-a
。