Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在linux命令行上安全地解压缩文件_Linux_Bash - Fatal编程技术网

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

如何在linux命令行上安全地解压缩文件,linux,bash,Linux,Bash,我想在linux命令行“bash”上安全地解压缩一个文件 命令: unzip -P filename.zip 将不安全,因为密码可能会出现在日志历史记录中等 我如何解压一个文件,使密码不会明显地回显到终端 手册页说明: “这是不安全的!许多多用户操作系统为任何用户提供了查看 任何其他用户的当前命令行;即使是在独立系统上,也总是存在着偷窥的威胁。存储明文通行证- 在自动脚本中,word作为命令行的一部分更糟糕。尽可能使用非回音交互式提示输入密码。(及 在安全性非常重要的地方,使用强加密,例如相当

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

命令:

unzip -P filename.zip
将不安全,因为密码可能会出现在日志历史记录中等

我如何解压一个文件,使密码不会明显地回显到终端

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

如果要以编程方式执行,可以使用“expect”程序(可能必须先安装该程序)。我提出以下建议:

#!/bin/bash

PWD="foo"

expect <<EOF
spawn unzip "$@"
expect "Archive"
expect "password:"
send "$PWD\n"
EOF
#/bin/bash
PWD=“foo”

expect您可以设置
bash
,使其忽略以空格开头的行。如果在
~/.bashrc
中设置此选项,它将在所有shell中生效

基本上,
HISTCONTROL
变量包含控制历史的指令。一个这样的指令是
ignorespace
,它导致历史忽略第一个字符为空格的行

我这样做只是为了测试它(它还没有在我的环境中设置):


您是否尝试过使用非回音的交互式提示?
man-zip
还提到:
如上所述,-P选项可用于在命令行上提供密码,但会牺牲安全性。首选的解密方法是简单地正常提取;如果zipfile成员已加密,解压将提示输入密码,而不回显键入的内容。
因此,您甚至不必在命令行上提供密码。如果命令以空白开头,则有一个shell选项可防止命令以历史记录结尾。请参见man:bash:HISTIGNORE:ignorespace。
$ export HISTCONTROL=$HISTCONTROL:ignorespace
$ ls foo
$  ls bar # note the leading space
$ ls baz
$ history
1009  ls foo
1010  ls baz