Bashスクリプトでsudoを維持する方法は?

Bashスクリプトでsudoを維持する方法は?

このスクリプトを実行すると、スーパーユーザー権限をどのように渡しますか?私は新しいマシンをセットアップするために必要な基本を学ぶためにこの記事を書いています。高い権限ですべてのコマンドを実行したくはありませんが、sudo高い権限を持つコマンドは実行したいと思います。

sudo一部のコマンドは通常のユーザーとして実行され、他のコマンドは通常のユーザーとして実行されるようにするにはどうすればよいですか。

#!/bin/sh

# If Linux, install nodeJS
if $(uname) = 'Linux';
then
    export IS_LINUX=1
    # Does it have aptitude?
    if  -x "which apt-get";
    then
        export HAS_APT=1
        # Install NodeJS
        sudo apt-get install --yes nodejs
    fi
    # Does it have yum?
    if  -x "which yum" ;
    then
        export HAS_YUM=1
        # Install NodeJS
        sudo yum install nodejs npm
    fi
    # Does it have pacman?
    if  -x "which pacman" ;
    then
        export HAS_PACMAN=1
        # Install NodeJS
        pacman -S nodejs npm
    fi
fi

# If OSx, install Homebrew and NodeJS
if  $(uname) = 'Darwin' ;
then
    export IS_MAC=1
    if test ! "$(which brew)"
    then
      echo "================================"
      echo "  Installing Homebrew for you."
      echo "================================"
      ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
      export HAS_BREW=1
    elif  -x 'which brew' ;
    then
      export HAS_BREW=1
      brew update
    fi
    # Install NodeJS
    brew install --quiet node
fi

# Does it have python?
if  -x "which python" ;
then
    export HAS_PYTHON=1
    if  -x "which pip" ;
    then
      pip list --outdated | cut -d ' ' -f1 | xargs -n1 pip install -U
      export HAS_PIP=1
    fi
fi
# Does it have node package manager?
if  -x "which npm" ;
then
    export HAS_NPM=1
else
    echo "NPM install failed, please do manually"
fi
# Does it have ruby gems?
if  -x "which gem" ;
then
    export HAS_GEM=1
fi

残りのbashスクリプト(詳しくは説明しません)は、npm、apt、yum、Brew、またはpacmanを使用して、システムに応じて配列からパッケージをインストールします。などの簡単なもののみを取り付けますgitwget

ベストアンサー1

初めて電話をかけると、sudoパスワードの入力を求められます。これにより、設定に応じてN分(デフォルトは5分IIRC)内に呼び出されると、パスワードを再入力する必要はありません。

次のことができます。

sudo echo >/dev/null || exit 1

または、次のようなものかもしれません。

sudo -p "Become Super: " printf "" || exit 1

スクリプトの始めに。

他人がこれを防ぐために、sudo ./your_scriptEUID(強く打つ):

if [[ $EUID -eq 0 ]]
then
    printf "Please run as normal user.\n" >&2
    exit 1
fi

または同様のもの:

if [ "$(id -u)" = "0" ]
   ...

とにかく、どのシェルをターゲットにしているかを確認してください。つまり

など。


到着「生きてください」一人でできます。それはまるで:

while true; do
  sleep 300
  sudo -n true
  kill -0 "$$" 2>/dev/null || exit
done &

おすすめ記事