如何安全地在linux命令行上解压缩文件

时间:2018-03-16 11:33:32

标签: linux bash

我想安全地在linux命令行“bash”上解压缩文件。

命令:

unzip -P filename.zip

将是不安全的,因为密码可能会在日志历史记录等中结束。

如何解压缩文件以使密码不会明显回显到终端?

手册页说明: “这是不安全的!许多多用户操作系统为任何用户提供了查看的方法               任何其他用户的当前命令行;即使在独立系统上,也总是存在过度偷窥的威胁。存储明文通行证 -               单词作为自动脚本中命令行的一部分更糟糕。尽可能使用非回显交互式提示输入密码。 (和               安全性非常重要,使用强大的加密,例如Pretty Good Privacy,而不是标准zip提供的相对较弱的加密               文件工具。)'

2 个答案:

答案 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