- - PR -
隣のサーバーにリモートでユーザーを追加したい。
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-04-19 16:41
お世話になります。
A:192.168.1.1 B:192.168.1.2 [root@A]ssh 192.168.1.2 useradd test01 でユーザーが追加できるようになりました。 しかし、実はこのコマンドをPHPのスクリプト内から実行したかったのです。 A:192.168.1.1 [Webサーバー] B:192.168.1.2 [mailサーバー] A内のphpスクリプト <?php system("ssh 192.168.1.2 useradd test01"); ?> このスクリプトを実行してmailサーバーにユーザを追加したいと思っておりましたが、おそらく、このスクリプトを実行するユーザーがnobodyであるために成功しませんでした。 うまくrootになってからこのコマンドを実行する方法などはございますでしょうか。もしくはnobodyがssh接続可能なように設定できればそれでも結構ですのでご教授願います。 | ||||
|
投稿日時: 2003-04-19 22:42
こんばんは、punkです。
|このスクリプトを実行してmailサーバーにユーザを追加したいと思っておりましたが、 |おそらく、このスクリプトを実行するユーザーがnobodyであるために成功しませんでした。 suexecを有効にしてみるとか ![]() | ||||
|
投稿日時: 2003-04-20 10:12
お世話になります。ご返答おりがとうございました。
さて、色々調べてみましたが、suexecを有効にする方法はたくさん見かけましたが、 ./configure --prefix=/usr/local/www \ --activate-module=src/modules/php4/libphp4.a --enable-suexec \ --suexec-caller=nobody --suexec-docroot=/share01/htdocs --suexec-userdir=. \ --suexec-uidmin=500 --suexec-gidmin=500 --enable-module=rewrite make make install 実際の使用方法が見当たりません、上記の通りapacheを再コンパイルした後、phpでどのように使用するのでしょうか。。 [想像・・・] A:192.168.1.1 [Webサーバー] B:192.168.1.2 [mailサーバー] A内のphpスクリプト <?php system("su -"); system("ssh 192.168.1.2 useradd test01"); ?> こんな感じでしょうか。。(まさかとは思いますが・・) | ||||
|
投稿日時: 2003-04-20 12:16
まずは、suEXECについて理解する事が重要です。
http://mimir.ex.nii.ac.jp/manual-ja/suexec.html
| ||||
|
投稿日時: 2003-04-20 12:31
ご返信ありがとうございます。こちらのサイトは昨日5回ほど読みましたが具体的な使用方法がやはりよく理解できませんでした。
「suEXEC の使用」が目ぼしい題であったのですが、読んでもよくわかりませんでした。 今のところ私は以下のように無理やり理解しています。 1.apacheを以下のようにconfigureするとsuexecが有効になる。 ./configure --prefix=/usr/local/www \ --activate-module=src/modules/php4/libphp4.a --enable-suexec \ --suexec-caller=nobody --suexec-docroot=/share01/htdocs --suexec-userdir=. \ --suexec-uidmin=500 --suexec-gidmin=500 --enable-module=rewrite make make install 2.これを有効にしていれば、phpスクリプトからroot権限でしか実行できないコマンドを自動的に感知して無条件に実行してくれる(笑)。 3.だから使用方法は <?php system("su -"); system("ssh 192.168.1.2 useradd test01"); ?> な感じである。 なんともばかげた話ですが、素人はこんなものです。。どうか根本的な間違いを正してもらえませんでしょうか。よろしくお願いいたします。 | ||||
|
投稿日時: 2003-04-20 16:23
とりあえずのところsuexecは調査中ということで他の方法で進めます(逃)。
nobodyはpasswdファイル内で/sbin/nobodyの指定がされていて、ssh接続ができないことが原因だったため、強引にapachのユーザーであるnobodyを一度userdelして、新規に #useradd nobody を行いました。 その後、サーバーを再起動したりしましたが、phpのwebページも動いておりますので、どうも問題ないようです。 さて、B:192.168.1.2 [mailサーバー] 内にrootでログインして #echo "test01:hoge1234"|chpasswd とやると見事にtest02のパスワードが変更されたのですが、A:192.168.1.1 [Webサーバー]にnobodyでログインして $ssh -l root B echo 'test01:hoge1234'|chpasswd とやっても成功しませんでした、おそらく書き方が悪いのだと思いますが、こんな場合どのように書けばよいのでしょうか。。ご教授願います。 ちなみにAのnobodyから $ssh -l root B useradd test02 は成功しております。 [ メッセージ編集済み 編集者: okumura 編集日時 2003-04-20 16:25 ] | ||||
|
投稿日時: 2003-04-21 11:53
suEXECを使うと、所有者権限でスクリプト等を実行する事が出来るようになります。
例えば、useradd.cgiと言うスクリプトがあった場合に、所有者をrootにすれば、system('useradd test2')とかが出来てしまいます。 自身がないのであれば、suEXECは諦めた方が良いでしょう。 セキュリティーホールに繋がる事もありますので・・・。
| ||||
|
投稿日時: 2003-04-21 12:01
いつもお世話になっております。なるほど、そうですね。。私もそれがいいと思います。
さて、 #echo "test01:hoge1234"|chpasswd #ssh -l root B useradd test02 は成功するのに #ssh -l root B echo 'test01:hoge1234'|chpasswd が成功しないのは書き方が悪いと思うのですが、複数のコマンドを一気に実行する場合、正しくはどのように記述するれば良いのでしょうか。。ご教授よろしくお願いいたします。 |