Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在没有sudo的情况下在shell脚本中运行特定命令?_Linux_Bash_Shell_Sh - Fatal编程技术网

Linux 如何在没有sudo的情况下在shell脚本中运行特定命令?

Linux 如何在没有sudo的情况下在shell脚本中运行特定命令?,linux,bash,shell,sh,Linux,Bash,Shell,Sh,我正在运行一个shell脚本,它正在以具有sudo权限的root用户身份运行。 它有gem install命令,该命令也作为sudo运行 但是我想在没有sudo的情况下运行gem install[command] #!/usr/bin/env bash curl -sSL https://get.rvm.io | bash -s stable rvm install stable gem install jekyll 这是一个用于vagrant的配置管理脚本 如果要以非特权特定用户的身份运行,

我正在运行一个shell脚本,它正在以具有sudo权限的root用户身份运行。 它有gem install命令,该命令也作为sudo运行

但是我想在没有sudo的情况下运行gem install[command]

#!/usr/bin/env bash
curl -sSL https://get.rvm.io | bash -s stable
rvm install stable
gem install jekyll

这是一个用于vagrant的配置管理脚本

如果要以非特权特定用户的身份运行,可以使用

sudo -u <username> command
sudo-u命令

如果您想以非特权特定用户的身份运行它,您可以使用

sudo -u <username> command
sudo-u命令

您不应该使用
sudo
运行整个脚本;脚本本身应该只为那些需要提升权限的命令调用
sudo

例如:

#!/usr/bin/env bash
curl -sSL https://get.rvm.io > installer  # Does not need sudo
bash installer stable                     # Maybe needs sudo?
sudo rvm install stable                   # I assume this needs sudo
gem install jekyll

直接从外部资源运行代码而不进行验证,更不用说以root用户身份运行了,这是一个很大的安全风险。您应该首先下载代码,验证它,然后将其作为参数传递给脚本

#!/usr/bin/env bash
bash "$1" stable         # Again, maybe needs sudo
sudo rvm install stable
gem install jekyll
要运行脚本,请执行以下操作:

curl -sSL https://get.rvm.io > installer
# Check if installer is the right script and is safe
myscript installer

您不应该使用
sudo
运行整个脚本;脚本本身应该只为那些需要提升权限的命令调用
sudo

例如:

#!/usr/bin/env bash
curl -sSL https://get.rvm.io > installer  # Does not need sudo
bash installer stable                     # Maybe needs sudo?
sudo rvm install stable                   # I assume this needs sudo
gem install jekyll

直接从外部资源运行代码而不进行验证,更不用说以root用户身份运行了,这是一个很大的安全风险。您应该首先下载代码,验证它,然后将其作为参数传递给脚本

#!/usr/bin/env bash
bash "$1" stable         # Again, maybe needs sudo
sudo rvm install stable
gem install jekyll
要运行脚本,请执行以下操作:

curl -sSL https://get.rvm.io > installer
# Check if installer is the right script and is safe
myscript installer

它只有一个用户,它的根用户。我真的不明白你想做什么。sudo是为(非root)用户授予root权限的。若用户已经是root用户,那个么使用sudo运行和不使用sudo运行并没有区别。如前所述,您可以将其用于根用户作为另一个用户运行。如果没有其他用户,那么,据我所知,sudo无法解决gem的问题,当你安装gem时,不应该与sudo gem install一起使用。它只有一个用户,它的根用户。我真的不明白你想做什么。sudo是为(非root)用户授予root权限的。若用户已经是root用户,那个么使用sudo运行和不使用sudo运行并没有区别。如前所述,您可以将其用于根用户作为另一个用户运行。如果没有其他用户,那么,据我所知,sudo无法解决gem的问题,当您安装gem时,不应与sudo gem install一起使用..可能重复的可能重复的