bash脚本应该使用sudo还是假设sudo?

Ste*_*ett 5 linux permissions bash sudo

哪种模式更可取:

#!/bin/bash
echo Installing blah
apt-get install -y blah
Run Code Online (Sandbox Code Playgroud)

...如果没有root权限运行会失败,或者:

#!/bin/bash
echo Installing blah
sudo apt-get install -y blah
Run Code Online (Sandbox Code Playgroud)

...只要用户具有sudo访问权限,它就会成功.

我倾向于使用第二种模式,但它似乎很少见,所以我问它的缺点是什么.我看到的好处是:

  • 很明显哪些命令实际上需要超级用户权限才能运行(如果读者想要将脚本拉开,则很有用)
  • 为用户保存一些按键.

我认为缺点包括使用root权限可能会令人惊讶("我没有输入sudo,所以我没想到像apt-get一样运行......").还有什么?

che*_*ner 2

第二个选项是正确的选项。不需要 root 访问权限的命令不应仅仅为了简化脚本而以 root 身份运行。确实需要 root 访问权限(或任何特定用户的访问权限)的命令应由 sudo 运行。为了清楚起见,您可以使用该-p选项来sudo显示自定义提示,该提示可以准确解释为什么要求用户输入密码。

选项二也是更可取的,因为sudo它具有高度可配置性,并且用户可能已经有权在sudo 没有密码的情况下运行特定命令,因此用户可能不会因密码提示而感到不便。用户不太可能在没有密码的情况下执行sudo任意命令(例如您的脚本)。