
私のUbuntuコンピュータで動作するbashスクリプトを書いた。これで、このスクリプトが私のユーザーとして実行されるのを防ぎ、ルートとしてのみ実行したいと思います。
これを強制することは可能ですか?私のユーザー名でスクリプトを実行すると、スクリプトにroot権限を要求させることができますか?
答え1
bash
この目的のための標準機能があります。
# Check if we're root and re-execute if we're not.
rootcheck () {
if [ $(id -u) != "0" ]
then
sudo "$0" "$@" # Modified as suggested below.
exit $?
fi
}
おそらくもっとエレガントな方法があるでしょう(私はこの記事をずっと前に書いています!)。しかし、これは私にとってうまくいきます。
スクリプトでこの関数を一貫して使用するには、スクリプトが元々受け取った引数を渡す必要があります。
使用法:(パラメータはrootcheck関数rootcheck "${@}"
にのみrootcheck
渡されません。)
答え2
私はスクリプトの上部に簡単にコピーして貼り付けることができるこの1行バージョンを使用しています。
[ `whoami` = root ] || { sudo "$0" "$@"; exit $?; }
答え3
sudo chown root yourcode
sudo chmod 500 yourcode
望むより!
答え4
ルートのみを実行できるように権限を変更できます。あるいは、whoami
ルートでない場合は、コマンドを使用してsudoを強制することもできます。