我想安全地在linux命令行“bash”上解压缩文件。
命令:
unzip -P filename.zip
将是不安全的,因为密码可能会在日志历史记录等中结束。
如何解压缩文件以使密码不会明显回显到终端?
手册页说明: “这是不安全的!许多多用户操作系统为任何用户提供了查看的方法 任何其他用户的当前命令行;即使在独立系统上,也总是存在过度偷窥的威胁。存储明文通行证 - 单词作为自动脚本中命令行的一部分更糟糕。尽可能使用非回显交互式提示输入密码。 (和 安全性非常重要,使用强大的加密,例如Pretty Good Privacy,而不是标准zip提供的相对较弱的加密 文件工具。)'
答案 0 :(得分:1)
如果您想以编程方式执行此操作,则可以使用该程序' expect' (您可能必须先安装)。我把以下
#!/bin/bash
PWD="foo"
expect <<EOF
spawn unzip "$@"
expect "Archive"
expect "password:"
send "$PWD\n"
EOF
在文件&#34; unzipP&#34;,然后&#34; unzipP filename.zip&#34;就像&#34; unzip filename.zip&#34;但是提供了unzipP脚本的密码。让它可见当然和其他任何地方一样糟糕,但也许你从数据库或只能阅读的文件中获取它。
答案 1 :(得分:0)
您可以设置bash
,使其忽略以空格开头的行。如果你在~/.bashrc
中设置它,它将在你的所有贝壳中生效。
基本上HISTCONTROL
变量包含控制历史记录的说明。一条这样的指令是ignorespace
,它导致第一个字符是空格的行被历史记录忽略。
我这样做是为了测试它(它还没有在我的环境中设置):
$ export HISTCONTROL=$HISTCONTROL:ignorespace
$ ls foo
$ ls bar # note the leading space
$ ls baz
$ history
1009 ls foo
1010 ls baz