我有一个程序将密码作为输入,然后执行 shell 以在 UNIX 中执行“su”(切换用户)命令。但是,我不知道如何将密码变量传递给 UNIX su 命令。我必须使用的语言非常有限(UniBasic)。
有任何想法吗?
我有一个程序将密码作为输入,然后执行 shell 以在 UNIX 中执行“su”(切换用户)命令。但是,我不知道如何将密码变量传递给 UNIX su 命令。我必须使用的语言非常有限(UniBasic)。
有任何想法吗?
好吧,最好的方法是使用 setuid-root 二进制文件,它要求输入密码,然后执行所需的任何命令,但它需要你说不要拥有的知识。我建议改为查看sudo(1) 。
您可以作为另一个用户 ssh 到 localhost 来执行您想要的任何命令。或者,使用 sudo 并编辑 /etc/sudoers 以使 sudo 不要求输入密码。但是,可能存在安全隐患。
编辑:当你投票否决时,请告诉我为什么。我的回答可能并不完美,但至少它有效。我自己为一些只能以奇怪的用户名运行的许可软件这样做。
您不想将密码指定为命令行参数。不是因为@unwind 的回答(脚本可以设为私有),而是因为如果有人运行进程列表,您可以看到命令参数,因此可以看到有问题的密码。
我的 Linux 服务器上的 su 版本不支持这样的选项。我检查了sudo,但也没有。他们希望自己进行提示,以确保以安全的方式完成,并且(我猜)阻止人们将密码逐字写入脚本等。
您还可以查看“expect”实用程序,该实用程序旨在将复杂的用户输入脚本写入一个不够灵活的程序,无法从标准输入以外的地方接收此输入。