我正在设置一台新机器(实际上是一个 Ubuntu VM),并尝试编写一个脚本来设置我在执行此操作时使用的一些常用功能(Git、curl、vim + janus)。
所以我的脚本看起来有点像这样:
#setup
#!/bin/sh
sudo apt-get install git
sudo apt-get install curl
...
将“sudo”与我的命令混合在一起似乎不太好——这只是我的安全感刺痛。看起来像下面这样的东西也可能有效:
sudo setup
有一个更好的方法吗?当您编写脚本并需要提升权限时,您的经验法则是什么?
答案1
在脚本中使用多个“sudo”调用没有问题。
我发现它比以 root 身份运行整个脚本更好,因为通过限制对真正需要它们的命令的权限提升来限制风险。
答案2
我两种方式都做过。我认为安全风险是相同的:如果有人编辑脚本,您将执行不需要的命令。因此,请确保写入权限受到限制。
sudo
如果我不希望整个脚本以 root 身份运行,我倾向于放入脚本。如果脚本运行很长时间(我编写脚本来构建 gcc 或其他大型项目),多次调用sudo
可能会多次提示用户,这可能会很烦人。
答案3
我会说不。除非你有充分的理由,否则不会。我在一家大型金融公司工作,该公司的安全措施非常严格,因此我们所做的一件事就是从每个人手中夺走 sudo,然后有选择地重新授予它。
我们删除的 ID 之一是 root。这意味着,如果我使用“sudo rpm ...”安装 RPM,我将以 root 身份执行此操作,这很好,但如果该 RPM 在其脚本中尝试 sudo,它将失败 - 因为,再一次,我们甚至将 root 锁定在全局 sudo 之外。
现在,如果我们碰巧有选择地为特定命令授予 sudo,那么如果 100% 的 RPM sudo 调用都是由 root 授予的,那么它可能会起作用。但这种可能性很小。
我们在 RPM 脚本中使用 sudo 时遇到了麻烦。我认为最好还是不要用它。或者至少要记住,有些公司像我的公司一样,你可能不知道谁有 sudo 做什么,甚至 root 也可能没有。