簡體   English   中英

如何在沒有sudo的shell腳本中運行特定命令?

[英]How to run specific command in shell script without sudo?

我運行一個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

它是針對流浪者的配置管理腳本。

如果要以非特權特定用戶身份運行它,則可以使用

sudo -u <username> command

您不應該使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM