编写使用 sudo 的 bash 脚本

编写使用 sudo 的 bash 脚本

我确信这是一个非常基本的问题,但恐怕我无法让它发挥作用或理解发生了什么。

我有一个通常用来运行的节点项目

sudo npm start

我正在尝试创建一个 bash 脚本来启动这个程序。

我尝试了几种变化:

su myname -c "npm run start"
sudo su myname -c "npm run start"
su myname -c "sudo npm start"

但它们似乎都在没有超级用户权限的情况下执行命令。从我所做的研究来看,

sudo su myname -c "npm run start"

是正确的,但它不起作用(它可以运行但没有权限)。有人能给我指出正确的方向吗?

答案1

不要sudo在脚本中使用纯文本,而是使用 root 权限运行整个脚本并sudo -u YOURUSERNAME执行命令没有如果确实有必要,则需要 root 权限。

编写如下脚本:

#!/bin/bash
npm start

保存它,使其可执行chmod +x /path/to/script,然后使用 root 权限启动它:

sudo /path/to/script    # from a terminal
gksudo /path/to/script  # without terminal (e.g. for a starter)
kdesudo /path/to/script # without terminal, KDE equivalent

这就是所需要的全部了。

您可以向脚本添加更多命令,例如,您可以检查它是否以 root 身份启动,否则退出(感谢PerlDuck):

[[ $EUID -ne 0 ]] && echo "This script must be run as root." && exit 1

相关内容