Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 我如何将密码传递给;苏";指挥部?_Unix_Authentication_Passwords - Fatal编程技术网

Unix 我如何将密码传递给;苏";指挥部?

Unix 我如何将密码传递给;苏";指挥部?,unix,authentication,passwords,Unix,Authentication,Passwords,我有一个程序,它将接受一个密码作为输入,然后执行一个shell,在UNIX中执行一个“su”(switch user)命令。但是,我不知道如何将password变量传递给unixsu命令。我必须使用的语言非常有限(UniBasic) 有什么想法吗?好吧,最好的方法是使用setuid root二进制文件,请求密码,然后执行所需的任何命令,但这需要你说不具备的知识。我建议改为看看。我在Linux服务器上的su版本不支持这样的选项。我查过sudo,但也没有。他们希望自己做提示,以确保以安全的方式完成,

我有一个程序,它将接受一个密码作为输入,然后执行一个shell,在UNIX中执行一个“su”(switch user)命令。但是,我不知道如何将password变量传递给unixsu命令。我必须使用的语言非常有限(UniBasic)


有什么想法吗?

好吧,最好的方法是使用setuid root二进制文件,请求密码,然后执行所需的任何命令,但这需要你说不具备的知识。我建议改为看看。

我在Linux服务器上的su版本不支持这样的选项。我查过sudo,但也没有。他们希望自己做提示,以确保以安全的方式完成,并且(我猜)阻止人们在脚本中逐字输入密码等等。

您可以作为另一个用户ssh到localhost,以执行您想要的任何命令。或者,使用sudo并编辑/etc/sudoers,以便sudo不要求密码。然而,这可能涉及安全问题


编辑:请让我知道为什么当你投票否决它。我的答案可能并不完美,但至少是可行的。我自己也这么做了,因为有些许可软件只能在一个奇怪的用户名下运行

您不希望将密码指定为命令行参数。不是因为@unwind的答案(脚本可以私有化),而是因为如果有人运行一个进程列表,您可以看到命令参数,因此也可以看到密码。

您还可以查看“expect”实用程序,该实用程序设计用于将复杂的用户输入脚本化到程序中,但程序不够灵活,无法从stdin以外的位置接收此输入。

sudo可以配置为不需要密码。我不知道为什么会这样被否决了,似乎是一个非常好的解决方法。我将使用setuid root选项。谢谢+1一个是因为它让我想起有多少次我看到人们询问在命令行上设置密码。这么多人应该吊销他们的UNIX/Linux操作许可证……那么有合理的解决方案吗?假设我想创建一个带有710个perms的私有脚本,它作为另一个用户名执行一个非常特定的任务(在我的例子中,启动postgres作为postgres)。最好的方法是什么?