私はいくつかのソフトウェアをインストールするbashスクリプトを持っています。ルートで実行されていない場合、できるだけ早く失敗したい。どうやってやるの?bash:スクリプトがルートで実行されていないと失敗します。
11
A
答えて
27
#!/bin/bash
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi
出典:http://www.cyberciti.biz/tips/shell-root-user-check-script.html
5
これに周り掘った後、コンセンサスがEUID
(実効ユーザID)変数が設定されるようにbashでid -u
を使用する必要がないことのようです。 UID
とは対照的に、EUID
は、ユーザがroot
またはsudo
の場合は0
になります。どうやら、これはid -u
を実行しているよりも約100倍高速である:
#!/bin/bash
if ((EUID != 0)); then
echo "You must be root to do this." 1>&2
exit 1
fi
出典:私は*一般*この愚かな行動を検討するが、https://askubuntu.com/questions/30148/how-can-i-determine-whether-a-shellscript-runs-as-root-or-not
+2
これはBourneシェルでは機能しません。厳密にPOSIX準拠のソリューションはありますか? –
関連する問題
- 1. BashスクリプトがCronで正しく実行されない
- 2. スクリプトがアプリケーションによって実行されたときにbashスクリプトのSSHコマンドが実行されない
- 3. bash:スクリプトがバックグラウンドで実行されない
- 4. jqueryプラグインがロードされていません - スクリプトが失敗しています
- 5. 起動時にBashスクリプトが実行されない
- 6. bashスクリプトから実行したときにgrepが色づけされない
- 7. cronで実行したときにbashスクリプトが失敗し、Libboostライブラリが見つかりません
- 8. ViewSVNがサポートされていないURLの実行に失敗する
- 9. コマンドラインでbash forループが動作しますが、スクリプトで失敗しました。
- 10. mvn release:pomファイルがリポジトリのルートにないために実行に失敗する
- 11. コマンドを実行していないBashスクリプト
- 12. JMSメッセージリスナーの実行に失敗し、ErrorHandlerが設定されていません
- 13. Django Apache - ルートとしてスクリプトを実行
- 14. bashスクリプトで2つの実行中のコマンドを実行してください
- 15. Xcode内で 'スクリプト実行'フェーズとして実行すると、OpenSSLビルドスクリプトが失敗する(Xcode外で成功)
- 16. ライブサイトで実行されていないjQueryスクリプトとの衝突
- 17. Python CGIスクリプトが実行されない
- 18. 実行中のbashコマンドまでbashrcがロードされない
- 19. 1つのコマンドが失敗してもすべてのコマンドが実行された場合、Bashは失敗します
- 20. 外部端末で実行するとBashスクリプトが動作しない
- 21. bashスクリプトからノードを実行しています
- 22. 最初に失敗したpy.testが長時間実行されない
- 23. 複数のコマンドをbashスクリプトで順番に実行し、少なくとも1つでも失敗した場合は失敗する
- 24. アプリケーションがサービスとして実行されているときにAcceptSecurityContextが失敗する
- 25. 鋸山、Omniauthと私は実行しています1.9.2p290 =>完全な失敗
- 26. 実行が失敗しました。java.util.NoSuchElementException
- 27. Nmapスクリプトが実行されていない
- 28. ロボットがインストールされていないRational Robotスクリプトの実行
- 29. launchdはpythonスクリプトを実行しますが、インポートは失敗します
- 30. ウィンドウハンドルが作成されていないため、BeginInvokeが失敗します
は:*許可が失敗するまで、それが実行してみましょう。*;現在のユーザーとして操作を正常に実行できるようにシステムを設定し、このオプションを強制的に取り除くことで[これまで同様の前提条件を設定したスクリプトを修正する必要がありました]。一方、私はroot権限で実行すると大量の警告を表示したり表示したりするような事件のほうがはるかに多い。 –
sudoを試してみてください。 linuxの下で、何かをインストールするときには、通常のユーザがシステムを傷つける可能性のあるものをインストールするのを防ぐためにrootにする必要があります。 – masterLoki
彼は、自分のスクリプトが忘れてしまったり、sudo(またはその他の特権エスカレーション手段)。他のことをしようとする前にランタイムの正気をチェックするのは良い習慣です。 –