在 UNIX 世界中,众所周知,您需要在当前目录./
中为二进制文件添加前缀以运行它们:默认情况下.
不在$PATH
。这是为了避免邪恶的二进制文件覆盖系统工具ls
和获取代码执行。
我想知道这个决定的历史。它从一开始就在 UNIX 中吗?某些贝壳?
我想说清楚:我不是在寻找一般的原因实施它的原因;我明白那些。我正在寻找导致它的事件,或者至少是在进行更改时。
引文将不胜感激。
有趣的是,看起来bash
实际上打算包含.
,至少这是我对这个来源的阅读(来自config-top.h
):
/* The default value of the PATH variable. */
#ifndef DEFAULT_PATH_VALUE
#define DEFAULT_PATH_VALUE \
"/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:."
#endif
Run Code Online (Sandbox Code Playgroud)
(有人质疑这个问题的相关性还有的是。有的谈了有关Windows的一些可执行文件安装的是很容易受到类似的攻击:在默认情况下的可执行文件将在DLL的搜索.
,所以通过种植一个邪恶的DLL中说Downloads
,你得到code exec,通常作为管理员。这是一个“不学习历史的人注定要重蹈覆辙”的时刻。)