在Ubuntu和Mac上运行脚本时,不需要使用点斜杠。

20 浏览
0 Comments

在Ubuntu和Mac上运行脚本时,不需要使用点斜杠。

在Ubuntu中,可以使用以下命令执行脚本:\n

$ chmod +x manage.py
$ manage.py

\n但是在Mac中,你需要使用./来实际运行脚本,如下所示:\n

$ chmod +x manage.py
$ ./manage.py

\n我想知道./究竟是什么(尤其是两个系统都默认使用bash),是否有一种直接在Mac中运行脚本的方法?

0
0 Comments

当你执行一个命令时,系统需要找到该文件(脚本/二进制文件)。这是通过将要查找脚本的目录放入PATH环境变量中来实现的。所以如果在Ubuntu上运行正常,这意味着PATH包含'.'(当前目录)。如果你希望在Mac上获得相同的行为,则需要在你的.bashrc文件中添加类似于export PATH="$PATH:."的内容(假设你正在使用bash)。

0
0 Comments

在Ubuntu和Mac上运行脚本时,不需要使用“./”的原因是,这是出于安全考虑,你(非常明智地)没有将“。”添加到你的“PATH”环境变量中。如果添加了“。”,那么它将成为攻击者利用的一个攻击向量,他们可以让你执行他们自己的代码而不是真正的命令。

举个例子,假设你的路径是:

.:/usr/bin

这样,命令首先会在当前目录中查找,然后在/usr/bin中查找。

然后,另一个用户在他们的主目录中创建了一个可执行的脚本文件ls,该脚本会切换到你的主目录并删除你的所有文件。然后他们告诉你他们的主目录中有一些有趣的东西。你运行ls查看他们有什么,结果你的文件被删除了。这是因为它首先在当前目录中运行了ls。

这是针对天真的系统管理员的一个特别喜欢的攻击向量。


老实说,在我自己的家用机器上,我不太担心这个问题,因为我是唯一的用户,而且我不太可能下载我不信任的东西。所以我通常会将“。”添加到我的路径中,以便使用方便,但通常是在最后,这样它不会妨碍我更常用的命令。

Paxdiablo;你展示的例子可能不相关,因为当你是系统管理员时,很有可能你会导航到该用户的主目录,但作为root用户。如果任何用户决定以这种方式设置非root用户的路径,你可以提问,但无法阻止。你说这是对系统管理员的一种攻击。从非root帐户,我不明白你如何改变root的PATH。非root用户;是的。但是,系统管理员控制备份,对吗?

攻击向量的问题不在于你能否更改某人的路径,而在于有权限的人可以。这包括天真的系统管理员更改root的路径,因为这样更方便。而文件的删除只是一个例子,无论有多少备份,都无法解决例如企业信息被盗的问题。

0