- PR -

隣のサーバーにリモートでユーザーを追加したい。

投稿者投稿内容
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 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接続可能なように設定できればそれでも結構ですのでご教授願います。
punk
ベテラン
会議室デビュー日: 2002/08/07
投稿数: 75
投稿日時: 2003-04-19 22:42
こんばんは、punkです。

|このスクリプトを実行してmailサーバーにユーザを追加したいと思っておりましたが、
|おそらく、このスクリプトを実行するユーザーがnobodyであるために成功しませんでした。

suexecを有効にしてみるとか
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 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");
?>

こんな感じでしょうか。。(まさかとは思いますが・・)
punk
ベテラン
会議室デビュー日: 2002/08/07
投稿数: 75
投稿日時: 2003-04-20 12:16
まずは、suEXECについて理解する事が重要です。
http://mimir.ex.nii.ac.jp/manual-ja/suexec.html


引用:

okumuraさんの書き込み (2003-04-20 10:12) より:
実際の使用方法が見当たりません、上記の通りapacheを再コンパイルした後、phpでどのように使用するのでしょうか。。

McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 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");
?>
な感じである。


なんともばかげた話ですが、素人はこんなものです。。どうか根本的な間違いを正してもらえませんでしょうか。よろしくお願いいたします。
McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2003-04-20 16:23
 とりあえずのところsuexecは調査中ということで他の方法で進めます(逃)。
引用:

このスクリプトを実行してmailサーバーにユーザを追加したいと思っておりましたが、
おそらく、このスクリプトを実行するユーザーがnobodyであるために成功しませんでした。


 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 ]
punk
ベテラン
会議室デビュー日: 2002/08/07
投稿数: 75
投稿日時: 2003-04-21 11:53
suEXECを使うと、所有者権限でスクリプト等を実行する事が出来るようになります。
例えば、useradd.cgiと言うスクリプトがあった場合に、所有者をrootにすれば、system('useradd test2')とかが出来てしまいます。

自身がないのであれば、suEXECは諦めた方が良いでしょう。
セキュリティーホールに繋がる事もありますので・・・。


引用:

okumuraさんの書き込み (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");
?>
な感じである。


なんともばかげた話ですが、素人はこんなものです。。どうか根本的な間違いを正してもらえませんでしょうか。よろしくお願いいたします。

McLaren
ぬし
会議室デビュー日: 2002/01/15
投稿数: 784
お住まい・勤務地: 東京
投稿日時: 2003-04-21 12:01
 いつもお世話になっております。なるほど、そうですね。。私もそれがいいと思います。

 さて、
#echo "test01:hoge1234"|chpasswd
#ssh -l root B useradd test02
は成功するのに

#ssh -l root B echo 'test01:hoge1234'|chpasswd

が成功しないのは書き方が悪いと思うのですが、複数のコマンドを一気に実行する場合、正しくはどのように記述するれば良いのでしょうか。。ご教授よろしくお願いいたします。

スキルアップ/キャリアアップ(JOB@IT)