在Ubuntu和Mac上运行脚本时,不需要使用点斜杠。
在Ubuntu和Mac上运行脚本时,不需要使用“./”的原因是,这是出于安全考虑,你(非常明智地)没有将“。”添加到你的“PATH”环境变量中。如果添加了“。”,那么它将成为攻击者利用的一个攻击向量,他们可以让你执行他们自己的代码而不是真正的命令。
举个例子,假设你的路径是:
.:/usr/bin
这样,命令首先会在当前目录中查找,然后在/usr/bin中查找。
然后,另一个用户在他们的主目录中创建了一个可执行的脚本文件ls,该脚本会切换到你的主目录并删除你的所有文件。然后他们告诉你他们的主目录中有一些有趣的东西。你运行ls查看他们有什么,结果你的文件被删除了。这是因为它首先在当前目录中运行了ls。
这是针对天真的系统管理员的一个特别喜欢的攻击向量。
老实说,在我自己的家用机器上,我不太担心这个问题,因为我是唯一的用户,而且我不太可能下载我不信任的东西。所以我通常会将“。”添加到我的路径中,以便使用方便,但通常是在最后,这样它不会妨碍我更常用的命令。
Paxdiablo;你展示的例子可能不相关,因为当你是系统管理员时,很有可能你会导航到该用户的主目录,但作为root用户。如果任何用户决定以这种方式设置非root用户的路径,你可以提问,但无法阻止。你说这是对系统管理员的一种攻击。从非root帐户,我不明白你如何改变root的PATH。非root用户;是的。但是,系统管理员控制备份,对吗?
攻击向量的问题不在于你能否更改某人的路径,而在于有权限的人可以。这包括天真的系统管理员更改root的路径,因为这样更方便。而文件的删除只是一个例子,无论有多少备份,都无法解决例如企业信息被盗的问题。