web-dev-qa-db-ja.com

スーパーユーザーとしてスクリプトを実行し、最初にユーザーをチェックし、スーパーユーザーでない場合はaskpassからパスを取得する方法

そこに同様の質問があります シェルスクリプトがルートとして実行されているかどうかをどのように判断できますか?

同じ疑問があり、結果は異なります

すべてを実行する前にBASHスクリプト内で、スクリプトがスーパーユーザーとして実行されているかどうかを確認し、そうでない場合は、このスクリプトを使用するにはスーパーユーザーである必要があるというメッセージを出力し、その後

askpassなどを使用してユーザーからパスを取得してから、スーパーユーザーと同じスクリプトを実行しますか?

6
pahnin

プログラムがルート権限を必要とするが、持っていない場合、私はただSudoを呼び出します:

#!/bin/bash
if [ $(id -u) != 0 ]; then
   echo "This script requires root permissions"
   Sudo "$0" "$@"
   exit
fi

"$0"には、スクリプトの名前、"$@"オプション引数が含まれます。プログラムが引数を受け入れない場合は省略できます。

注:このシェルスクリプトはシェルで実行されることが予想されます。このスクリプトをGUIとして実行する場合は、gksuの代わりにkdesudoまたはSudoなどを使用してください。

12
Lekensteyn