我有以下expect脚本,它执行'myexe'并将一些密码作为参数传递:

#!/usr/bin/expect
gets stdin pwd

log_user 0

eval spawn "/myexe ${pwd}"

log_user 1
expect eof
catch wait result
exit [lindex $result 3]

我的可执行文件'myexe'是编译的Linux可执行文件(不是shell脚本),目标是安全地向它传递密码。不幸的是,可执行文件没有读取密码的stdin,而是期望它作为开始参数。
当我执行下面的expect脚本时,我看不到'ps'的'myexe'可执行文件。有人知道由expect执行的“spawn”是否足够安全吗?密码是否在其他地方可见(例如/proc)?

最佳答案

此处不要使用eval。这可能是灾难性的,取决于密码的内容。这应该足够:

spawn /myexe $pwd

任何在myexe运行时执行ps -ef的人都可以看到密码。

关于linux - 期望的“spawn”命令是否安全地传递参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34593175/

10-13 06:42