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