Answers:
如果您是计算机上的唯一用户,那么只要知道您在做什么就可以。通常要担心的是,通过将当前目录放在中PATH
,您将看不到命令作为常量列表。如果需要从当前目录运行脚本/程序,则始终可以通过./
在其名称前添加前缀来明确运行它(您告诉系统“我想从当前目录运行此文件”)。
假设现在您的文件系统中都包含所有这些小脚本;有一天,您肯定会犯错。因此,将您PATH
的静态路径作为预定义列表仅与顺序有关,并且可以避免潜在的问题。
但是,如果要添加.
到中PATH
,建议将其添加到列表(export PATH=$PATH:.
)的末尾。至少您不会以这种方式覆盖系统范围的二进制文件。
如果你的系统上的根,并有系统暴露给其他用户的账户,其.
在PATH
是一个巨大的安全隐患:你可以cd
到一些用户的目录,并无意中运行恶意脚本也只是因为输入错误的事情或脚本与系统范围的二进制文件具有相同的名称。
ls
在当前目录中。接下来,您ls
需要检查提取的文件,并且您已经运行了恶意代码。
风险是有人将恶意可执行文件放到了您当前所在的目录中。
最坏的情况发生在以下情况:
.
在PATH的开头,因为您可以在不注意标准命令的情况下覆盖标准命令(通常该命令可以将ls
其自身从列表中隐藏起来)。如果您以常规用户身份登录并且.
PATH末尾有,但风险仍然低得多:
请注意,无论如何,即使您是机器的唯一用户,风险仍然存在。例如,如果您恰巧提取了从受感染站点下载的存档,则将安装恶意软件。
sl
以查看第3点发生的频率。
alias l=`ls`
。
ls
得到一个目录列表,但是我下载的某些项目可能ls
在其根项目文件夹中有一个脚本,作为其他内容的快捷方式。ls
这可能是一个不好的例子,但我当然可以想象e
用于编辑,d
调试,m
制造,b
构建。我在全球范围内都有一些自己。如果键入,m
我希望make启动(我的快捷方式),而不是调用某些本地脚本m
来执行。
w
和[
。
即使你总是很小心你键入的内容,把.
你的PATH
,即使到了最后,仍然是不安全的,因为某些程序改变当前目录/tmp
(这是世界上可写的),也可能尝试执行一个实际未安装实用程序,因此默认为in /tmp
。如果发生这种情况,这是攻击的媒介。
还要注意,避免使用.
in 并没有太多缺点PATH
,因为./
它易于键入(特别是在QWERTY这样的键盘上,其中这些字符位于连续键上,并且不需要Shift),并且使用./
还将有助于完成操作,从而潜在地节省了击键次数在末尾。
如果您确实希望能够从当前目录中键入命令,那么现代外壳程序(如zsh,带有其command_not_found_handler
)可以提供安全地执行此操作的功能,即允许您在处理程序之前添加所需的所有安全检查。命令被执行。