这个页面对"using curl | sudo sh"模式说:

Use this approach when making changes on production server [instead]

curl -sf -L https://static.rust-lang.org/rustup.sh -o rustup.sh
less rustup.sh
chmod +x rustup.sh
sudo ./rustup.sh

我不明白为什么这比仅仅做curl | sudo sh还好。您下载文件并先对其进行chmod操作有什么不同?我还没有看到任何争论curl的替代方案。 sh以及为什么它们更好,只有curl的问题| sh。请解释一下上述情况如何(在某些细节上)更好,或者任何其他替代方法在某些细节上都更好。

例如,没有任何响应这里解释任何替代方案或它们为何更好。我见过的所有其他网站都一样。

主要论点是,如果有人入侵您的服务器,他们可以用其他方式替换代码。但是,任何软件包管理器都不会发生这种情况吗?我的意思是谁每次都会在npm installing之前深入检查代码,甚至使用它进行本机C扩展。这些可能会做同样的事情,尤其是在安装时运行的before/after shell脚本的情况下。我不认为这些比用bash管道更安全。

分析解答

显着差异是使用less。引号提示您检查已下载文件的内容。这是必需的,因为该代码未签名。程序包管理器使用签名来信任源。检查内容很重要,因为将某些内容从Web服务器直接管道传输到您的Shell中并不安全。有关说明,请参见这里如何利用这里