我正在运行一个非标准版本的 Ubuntu,我尝试按照https://news.ycombinator.com/item?id=8364385的说明通过从源代码下载和重新编译来修补 shell 冲击错误。之后make install
,运行bash --version
显示 4.3.24(2)。但是在运行错误测试时:
env var='() { :;}; echo vulnerable' bash -c /bin/true
仍在打印vulnerable
。难道我做错了什么?
我正在运行一个非标准版本的 Ubuntu,我尝试按照https://news.ycombinator.com/item?id=8364385的说明通过从源代码下载和重新编译来修补 shell 冲击错误。之后make install
,运行bash --version
显示 4.3.24(2)。但是在运行错误测试时:
env var='() { :;}; echo vulnerable' bash -c /bin/true
仍在打印vulnerable
。难道我做错了什么?
4.3.24 从 2014 年 8 月开始;你需要 4.3.25。
您很可能没有bash
在正确的位置安装新的。或者你根本没有设法安装它。
make install
仅当您以 root 身份运行时才有效。通常,你需要做
sudo make install
如果不这样做,您将看到一条错误消息:
$ make install
***********************************************************
* *
* GNU bash, version 4.3.25(1)-release (x86_64-unknown-linux-gnu)
* *
***********************************************************
mkdir -p -- /usr/local/share/doc/bash
mkdir: cannot create directory ‘/usr/local/share/doc/bash’: Permission denied
make: *** [installdirs] Error 1
这意味着该软件未安装。(您只需要重做安装步骤。)
此外,默认情况下,bash 构建文件会将您的新 bash 安装为/usr/local/bin/bash
,而您的旧bashbash
将继续存在于/usr/bin/bash
. 通过键入以下内容检查正在运行的 bash:
which bash