SUIDシェルスクリプトの危険性を考えると、Linuxでroot権限を持つスクリプト(bash、PHP)にパスワードなしでアクセスできるようにするためのより安全な方法はありますか?
(Ubuntu 8.10)
sudoを検討することができます。
「パスワードなし」ではありませんが、ユーザーにrootパスワードを与える必要はありません。また、スクリプトの使用の監査証跡を提供することもできます。
編集:クリスからのコメントによると、特定のコマンドにパスワードをまったく必要としないオプションがあります。詳細については、ここを参照してください。また、パスワードの入力を過度に求めないように設定することもできます。つまり、パスワードを1回入力するだけで、一定期間にわたって複数のコマンドを実行できます。
ちなみに、sudoはUbuntuに組み込まれており、Gnomeとうまく統合されています。特権操作を行うためにubuntuがパスワードの入力を求めるプロンプトが表示されたら、それは内部でsudoです。
sudo ルートを使用する場合は、sudoers のマニュアル ページの「シェル エスケープの防止」セクションを必ず確認してください。
sudoをお勧めします。sudoers
ファイルを適切に締めてください。はい、パスワードを要求せずに一部のコマンドを実行できるようにすることができます。
通常のユーザーが昇格された特権でシェルスクリプトを実行できるようにsudoを構成することは、セキュリティの観点から、スクリプトをsuidrootにするよりも優れているわけではありません。すべての落とし穴はまだ存在しています。代わりに、広範なセキュリティチェックを行う適切なプログラムを作成する必要があります。考慮すべきいくつかのポイント:
sudoについてはすでに説明しているので、必要に応じて、さまざまなサンドボックス環境を検討することをお勧めします。たとえば、 jailなどです。
セキュリティを向上させるために、必要なアクセス権を正確に持つ特別なユーザーまたはグループとして操作を実行できるかどうかを検討してください。次に、そのユーザーまたはグループのスクリプト setuid/setgid を作成できます。
非常に重いソリューションについては、SELinux、AppArmor、TrustedBSD などの MAC (Mandatory Access Control) システムを検討してください。
ユース ケースが VirtualBox の下で実行されているマシンであり、セキュリティが実際には問題ではない場合、自分が足を撃たれるのを防ぐためにライト バリアが必要なだけです。(その場合、VirtualBox が NAT を介してマシンを隔離する方法のために、とにかくそれを見ることができない部外者によってマシンが侵害されても問題にならないため、セキュリティの議論は実際には意味がありません。)