インストールスクリプト - sudo認証の互換性?

インストールスクリプト - sudo認証の互換性?

私は現在いくつかのスクリプトを更新しており、他の人が使用できるようにいくつかの便利なスクリプトをリリースする予定です。そのため、さまざまなコンピュータでクラッシュや損傷なしに動作する必要があります。

そのうちの1人は、Fedoraシステムにchromiumpepflashプラグインといくつかの他のものを追加しました。私は元のスクリプトを次のように作成しました。ロシアフェドラに関することそうすることは当時は信頼できなかったようで、迷惑な依存関係がたくさん必要で、時には昔ながらでした。私のスクリプトは私が思うように動作するはずです。Ubuntuスクリプト実際には - Chromeパッケージを使用してプラグインを抽出して正当に再配布できます。

何をしているのかを理解したら、次のようなコピーコマンドを使用してChromeインストールなどにコンテンツをコピーする必要があります(私のFedora 21システムではうまく機能します)。

sudo cp -riv ${tmpdir}/* ${location}/

${tmpdir}/tmp/tmp.IOfylQBAHTなどがある可能性${location}がある場所/usr/lib64/chromium-browser/は、どちらもスクリプトが実行される設定と使用されるオプションによって異なります。通常、2 つまたは 3 つのコピーコマンドが必要です。

私の質問は、すべてのシステムがそれを使用するわけではないと思います(一部のシステムは使用する必要がありsudoます)。susudo インストールされていませんまたは設定、一部のシステムでは、ユーザーにroot権限がまったくない可能性があります)。

  • それを使っsudoて頑張ってください
  • timeout 2 sudo -v > /dev/null 2>&1ユーザーがsudoをrootとして使用してタスクを実行できることを確認するなど、奇妙なタスクを使用してください。$?これらのメッセージを表示して終了できない場合は、To finish installation, please run 'cp -riv ${tmpdir}/* ${location}/' as root可能であれば続行してください。(テストコマンドは、ユーザーがsudoを使用しようとすると、一部のシステムで悪名高い「このイベントが報告されます」という問題を引き起こす可能性があります。また、ユーザーのタイムアウトなどが延長される可能性があります。源泉)
  • 終了し、しばらくしてメッセージを表示します。echo(参考に編集され、${tmpdir}適切な位置などに置き換えられる予定です。)
  • ユーザーが root でスクリプトを実行していることを確認します。たとえば、次のようになります。

    if [ "$(whoami)" != "root" ]; then echo -e "\e[31mERROR: This needs to be run as root\e[0m"; exit 1 ; fi
    
  • その他:)

答え1

私は個人的にスクリプトsudoを置くのが悪い考えであるかのように、それについて何も仮定しません。sudoIMHO、4番目の提案(スクリプトがrootとして実行されていることを確認)が最高です。私は名前の代わりに有効なユーザーIDを確認することを好みます。

[ -n "$EUID" ] && [ $EUID -eq 0 ] || <not root, exit>

これにより、スクリプトの実行に使用するスーパーユーザーツールをユーザーが選択できます。

関連情報