- 締切済み
PHP を使い、webminのようにリモートでlinuxをシャットダウンさせたい
こんにちは webminのように、クライアントのPCからリモートでlinunxサーバーをシャットダウンするには どういうスクリプトを書けばよいかご存知の方 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- akino4
- ベストアンサー率18% (35/185)
そもそも、setuidビットの存在すら知らないのに (cf. chmod(1) そのようなアプリケーションを開発しようというのが無謀なのでは? 一度ゆっくりunixについて調べてからがいいとおもいますよ 趣味でやるならばですね・・・ 仕事でやるなら、裁判沙汰になる前にやりにげ・・・(w wwwユーザをoperatorグループにしちゃえば・・・(悪 もしくは shutdownを呼び出すスクリプトを chown root:www それ chmod 4550 それ とかしてそれをphpから呼び出すとか #そんなことするぐらいならsudoをインストールするというのも手 理解せずにそんなことやってると穴だらけの製品が出来るので あまりやってほしくありませんが・・・
- sou_sk
- ベストアンサー率71% (15/21)
「動けばいい」で考えるのは危険過ぎます。 PHP に拘る必然性がないのであればどういう状況で何をしたいのか質問から定義し直した方が良いと思います。 SSH を使うなりコマンドにしても SETUID を利用するなり色々と方法はあるのでは。
- nancy_and_andy
- ベストアンサー率50% (4/8)
>見当違いの回答ではございませんのでご安心ください。 安心しました。 >やりたいことは、マウスもキーボードもCRTもないLinuxサーバーをいかにしてシャットダウンさせるかを考えております。 そう言ったことであれば、phpとかではなく、telnetを使ってシャットダウンしたほうがいいのではないでしょうか? telnetを使うとクライアント側のPCからリモートでLinuxサーバーを自由自在に動かせます。 普段はどのようにサーバーを管理しているのでしょう?
補足
ご回答ありがとうございます。 LinuxをサーバーにしたWEBアプリケーションを開発してまして、telnetやshutdown操作ができないひとでもクライアントPCからリモート操作でサーバーをシャットダウンできるようにしたいのです。サーバーにCRTやキーボードはつけません。 UPS製品を使えば、ハード的に対処できるのですが、せっかくソフト的に可能性があるので実現してみたい気持ちでおります。 PHPやLinuxの基本は理解できるのですが、sshなどが出てきますとどのように組み合わせて操作すればリモートシャットダウンができるのかわからない状態です。 最初から詳しい内容を記載すればよかったと反省いたします。
- nancy_and_andy
- ベストアンサー率50% (4/8)
こんにちは。 素人ですが、このお話に興味を持ちました。 >webminのように、クライアントのPCからリモート >でlinunxサーバーをシャットダウンするには webminというのは、わかりませんがブラウザからサーバーをシャットダウンできればいいんですよね? どのような点で引っかかっているのでしょうか? ブラウザからLinuxコマンドを使うことでしょうか? <?php $a = system("/bin/ls"); print $a; ?> このようにするとコマンドが実行できます。 しかし、lsなどではなくシャットダウンとなるとルート権限が必要な気がします。 phpを動かすユーザは、apacheだと思う(自信なし。調べたわけでもなく、勘です。)ので、apacheにシャットダウンする権限を与えてはいかがでしょうか? こう言ったプログラムはとても危険が伴うので気をつけてください。悪用されたら大変です。 まったく見当違いの投稿でしたらごめんなさい。 次の回答者を待ちましょう。
補足
アドバイスありがとうございました。 見当違いの回答ではございませんのでご安心ください。 やりたいことは、マウスもキーボードもCRTもないLinuxサーバーをいかにしてシャットダウンさせるかを考えております。 確かに、$a = system("/bin/ls");でコマンドを実行できるようですが、shutdownの権限を与える方法がピンとこないので具体的にどうしたらいいかお聞きしたいです。 Linuxはまだ、初心者なのでよくわかりませんが Apache のhttpd.conf にあるユーザとグループをrootにしてしまえばいいのでしょうか。 それとも usermod でグループをapacheからrootに変えるだけでいいのでしょうか。
補足
ご回答ありがとうございます。 SSHやSETUIDについて経験がないもので、どうしたら いいのかわかりません。