私は現在、既存のLinuxシステム(現在Ubuntu)にさまざまなプログラムをインストールして設定するためのbashスクリプトを作成しています。プログラムをインストールし、高い権限を必要とするさまざまなフォルダに多くのファイルをコピーするため、「高い権限が必要です」という標準を実行して終了しました。
ただし、可能であれば、ユーザーがsudoを使用せずにスクリプトコマンド(GUIファイルマネージャで実行など)を実行しない場合、ユーザーにsudoパスワードの入力を求め、スクリプトの権限を自動的に昇格させることができます。ユーザーはスクリプトを再起動する必要があります。
デフォルトのLinuxインストールで実行するように設計されているため、システムの変更オプションは私の目的には合いません。すべてのオプションはスクリプト自体に含める必要があります。
Bashでこれは可能ですか?それでは、これを行うための最良の(安全だが簡潔な)方法は何ですか?
答え1
sudo
スクリプトから直接実行します。
if [ $EUID != 0 ]; then
sudo "$0" "$@"
exit $?
fi
答え2
スクリプトの最初の行に以下を追加します。
[ "$UID" -eq 0 ] || exec sudo bash "$0" "$@"
グラフィックヒントを好む場合、またはsudo
に変更しますgksu
。gksudo
答え3
私は以下をお勧めします:
#!/bin/bash
if (($EUID != 0)); then
if [[ -t 1 ]]; then
sudo "$0" "$@"
else
exec 1>output_file
gksu "$0 $@"
fi
exit
fi
# some example stuff
ls -l /root
echo "app: $0"
for f; do
echo ">$f<"
done
答え4
visudo
編集に使用するファイルはsudoers
次のとおりです。
- ユーザー行で、ユーザー名の横に以下を追加します。
その後、保存します。ALL=(ALL) NOPASSWD: ALL
- ユーザー
彼はパスワードを入力せずにrootとしてログインします。sudo su -