我喜欢为事物提供单行bash安装脚本,看起来像这样:
curl https://gist.githubusercontent.com/.../raw/install.sh | bash
甚至
curl http://tinyurl.com/installmything | bash
但对于那些不信任我的人来说,这显然是一个巨大的安全风险。
是否有任何方便,简单的方法:
例如,我可以像这样提供单行:
wget https://gist.githubusercontent.com/.../installthing.sh ; cat installthing.sh ; read -p "Type YES to continue: " X && [ $X = "YES" ] && bash installthing.sh
这不符合繁琐的要求。有更好的方法吗?
答案 0 :(得分:5)
有两种类型的人不信任你:
谁知道bash:这些人无论如何都会下载你的脚本并查看其内容。他们了解curl ... | bash
做了什么,他们不会执行该命令。
谁不知道bash:即使你向这些人展示源代码,他们也无法做到这一点。他们无法决定该代码是否存在安全风险。
所以我认为不需要让用户在执行前查看脚本的内容。但是如果你仍然需要它,你可以运行脚本,但在实际代码执行之前询问用户。类似的东西:
#!/bin/bash
read -p "Do you wish to see the content of this script before execution?" -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]
then
tail -n +20 "$0"
echo
read -p "Continue? " -n 1 -r
echo
if [[ $REPLY =~ ^[Nn]$ ]]
then
exit
fi
fi
echo "INSTALL"
这样你可以继续使用:
curl https://gist.githubusercontent.com/.../raw/install.sh | bash