小编nfi*_*ine的帖子

UNIX 的历史不包括 $PATH 中的当前目录

在 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,通常作为管理员。这是一个“不学习历史的人注定要重蹈覆辙”的时刻。)

path history

6
推荐指数
1
解决办法
2229
查看次数

标签 统计

history ×1

path ×1