有一个脚本可以向我的 /etc/hosts 文件添加额外的行以启用本地开发。由于它非常有用,我决定将其保留为要点。
当我的一个朋友下载了 shell 脚本、更改了必要的权限并尝试运行它时,失败了。
显示的错误是:
$ ./dev-mode
: 没有这样的文件或目录
尽管该脚本在我的计算机上完美运行。 /etc/hosts 文件存在于我们的两台计算机上,权限和所有者都相同。一切都绝对相似。
然后他创建了一个新文件,将脚本的内容复制到新文件中,并更改了必要的权限,然后它就运行了!
在我看来,这两个文件之间没有任何可以想象的差异,但 diff 确实表明了它们的差异,但没有突出显示任何行或任何字符...什么都没有。权限相同,等等。
ubuntu 是否会以不同的方式处理下载的文件并阻止其运行?
完全相同的文件,一个运行,另一个不运行
答案1
本质上是的。当你从互联网上下载文件时,你获取的数据是里面文件。
您没有获取的是应用于文件的权限。这是在您的本地文件系统上完成的。
要使文件在本地系统上可执行,请进入终端并运行
chmod +x filename.sh
这会告诉你的文件系统将该特定文件视为可执行文件。
这是有原因的。假设你要下载一个文件,该文件的权限允许任何人在您的计算机上运行它。这显然存在安全风险。