我有以下 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 脚本),目的是将密码安全地传递给它。不幸的是,可执行文件不会读取密码的标准输入,而是将其作为启动参数。
当我执行以下期望脚本时,我看不到带有“ps”的“myexe”可执行文件。有人知道期望执行的“产卵”是否足够安全?密码在其他地方是否可见(例如/proc)?
最佳答案
不要在这里使用eval
。根据密码的内容,这可能是灾难性的。这应该足够了:
spawn /myexe $pwd
任何在 myexe 运行时执行 ps -ef
的人都可以看到密码。
关于linux - expect的 'spawn'命令传参是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34593175/