質問: webインターフェイスからサーバーをシャットダウンする方法 webページのボタンをクリックして、サーバーをリモートでシャットダウンできるようにしたい。サーバーはubuntu14.04.164ビットとpython webアプリケーションを実行します。どちらかはまだ決めていませんが、apacheまたはgunicornのいずれかになります。常にマシンに物理的にアクセスできるとは限らないため、サーバーをリモートでシャットダウンできる必要があります。 ssh経由でログインして、そのためにpoweroffコマンドを実行する必要はないので、シャットダウンを開始するための一種のボタンをブラウザーに配置したいと思います。私のアイデアは次のようなものです シャットダウンプログラムを作成してroot所有者にし、スティッキービットを設定します。 python webアプリケーションはそれを呼び出すことができます どういうわけか、sudoersファイルを使用する webappにファイルに書き込み、その(inotify)を監視してシャットダウンコマンドを送信させる ベストプラクティス、または少なくともこれを行うための最も安全な方法は何ですか?もちろん、webインターフェースは保護され、偶発的なクリックから保護するメカニズムもあります。
回答: このためのスクリプトを作成する理由はありません。pythonを介して作成できます。いずれにせよ、 suidを設定することはできません linux上のスクリプトのビット。最も簡単な方法は、pythonスクリプト内からshutdownコマンドを実行し、webサーバーのユーザーにそれを実行する権利を与えることです。 webサーバーが実行するユーザーにshutdownを実行する権利を与えます。 visudoを実行し、次の行をファイルに追加します。 www-data all=nopasswd:/sbin/shutdown サーバーはユーザーwww-dataとして実行されていると想定しています。そうでない場合は、適切に変更してください。 shutdownコマンドを実行する小さなスクリプトを作成し、それをcgi-binディレクトリの1つに保存します。 #!/usr/bin/env python import os; os.system("sudo shutdown -h now"); スクリプトを実行可能にする sudo chmod 755 /var/www/yourpage/cgi-bin/shutdown.py そのスクリプトを実行するボタンを提供するwebページを作成します。 <html> <body> <form method="post" action="cgi-bin/shutdown.py"> <input type="submit" value="submit" name="submit"> </form> </body> </html> これで、サーバーをシャットダウンするボタンができました。セキュリティに関する注意このためにwebインターフェイスを設定する理由がわかりません。これは明らかに非常に危険です。そのページにアクセスできる人は誰でもコンピュータをシャットダウンできます。ただし、それを回避する方法はありません。何をするにしても、マシンをシャットダウンできるwebページが作成されます。つまり、ページを表示できる人なら誰でもシャットダウンできます。ので注意してください。はるかに優れた代替手段は、別のマシンから次のようなものを実行することです。ssh root@server shutdown -h now これは単一のコマンドであり、linuxシステムを使用している場合は、その1ワードのエイリアスを作成することもできます。 bashを使用している場合は、この行を~/.bashrcに追加するだけです。alias shtdn='ssh root@server shutdown -h now' そうすれば、shtdnを実行するだけで、リモートマシンを安全かつ確実にシャットダウンできます。webインターフェースを介してこれを実行できることを本当に主張する場合は、 webmin のようなものを試してみることをお勧めします。これは、フル機能のwebベースのサーバー管理スイートです。これは無料でオープンソースであり、インストールが非常に簡単で、コンピューターのさまざまな側面に直感的なguiを提供します。これを使用して、samba共有、webサーバー、データベースなどを構成できます。また、これを使用してシステムをシャットダウンすることもできます。debianベースのシステムでは、実行するだけでインストールできますsudo apt-get install webmin 完了したら、http://localhost:10000に移動し、rootとしてログインします。最初にsudo passwdを実行してrootアカウントをアクティブ化する必要がある場合があります。次に、[システム]-> [起動とシャットダウン]に移動し、ページの最後までスクロールして、[シャットダウン]ボタンをクリックします。これはセットアップが非常に簡単で、実装するアドホックソリューションよりも安全である可能性があります。