添加 . 是否安全?我的路径?怎么会?

添加 . 是否安全?我的路径?怎么会?

我看到人们提到其他 答案.在环境变量中包含当前工作目录(“”)是一个坏主意$PATH,但一直无法找到专门解决该问题的问题。

那么,为什么我不应该添加.到我的路径中呢?如果不顾所有警告我还是这么做了,我需要注意什么?将其添加到末尾比添加到开头更安全吗?

答案1

如果您是机器上的唯一用户,那也没关系,只要您知道自己在做什么即可。人们普遍担心的是,通过将当前目录放在 中PATH,您无法将命令视为常量列表。如果您需要从当前目录运行脚本/程序,您始终可以通过在./其名称前面添加来显式运行它(您告诉系统“我想从当前目录运行此文件”)。

比如说,现在您的文件系统中遍布了所有这些小脚本;有一天你肯定会运行错误的。因此,将您的PATH静态路径作为预定义列表就是为了顺序并避免潜在问题。

但是,如果您要添加.到您的PATH,我建议将其附加到列表的末尾 ( export PATH=$PATH:.)。至少您不会以这种方式覆盖系统范围的二进制文件。

如果您是系统的 root 用户,并且系统暴露于其他用户的帐户,那么存在.巨大PATH的安全风险:您可以cd进入某些用户的目录,并且无意中在那里运行恶意脚本,只是因为您错误地输入了某个内容或脚本与系统范围的二进制文件具有相同的名称。

答案2

风险是有人将恶意可执行文件放入您当前的目录中。

最坏的情况发生在以下情况:

  • 您以 root 身份登录,因为恶意命令具有无限的破坏能力
  • .位于 PATH 的开头,因为标准命令可以在您不注意的情况下被覆盖(通常ls可以将其自身隐藏在列表中)。

.如果您以普通用户身份登录并且在 PATH 末尾有 ,但它仍然存在,则风险要低得多:

  • 有人可能会发现您经常输错命令并安装匹配的命令
  • 有人可能会安装一个假命令,其名称与未安装的命令相同。

请注意,无论如何,即使您是机器的唯一用户,风险仍然存在。例如,如果您碰巧提取了从恶意或受感染站点下载的存档,就会安装恶意软件。

答案3

即使您总是非常小心输入的内容,即使在最后,放入.您的,仍然是不安全的,因为某些程序将当前目录更改为(全局可写),并且还可能尝试执行实际上未安装的实用程序,因此默认为 中的内容。如果发生这种情况,这就是攻击的媒介。PATH/tmp/tmp

.另请注意,避免in并没有太多缺点PATH,因为./很容易键入(特别是在 QWERTY 等键盘上,这些字符位于连续的键上并且不需要 Shift)并且 using./也将有助于完成,从而可能节省击键次数在最后。

如果您确实希望能够从当前目录键入命令,那么现代 shell(例如 zsh 及其command_not_found_handler)可能会提供安全地执行此操作的功能,即允许您在处理程序中添加所需的所有安全检查,然后再执行命令被执行。

答案4

不,这很危险。如果您想运行a当前目录中的程序,只需运行./a.

这样做很危险,因为您可能会冒着运行其他人在您访问的目录中植入的特洛伊木马的风险。

想象一下,当您下载包含名为 的二进制文件的 tar 文件时会发生什么ls

相关内容