我有以下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/