我运行一个shell脚本,它以root用户身份运行,具有sudo权限。 它有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的配置管理脚本。
答案 0 :(得分:2)
如果您想以非特权用户身份运行它,可以使用
sudo -u <username> command
答案 1 :(得分:0)
您不应该使用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