68user's page 掲示板

Prev< No. 545〜561> Next  [最新発言に戻る] [過去ログ一覧]
No. 545 # みのる 1999/11/16 (火) 12:10
下記コマンドでも同じエラーになりました。
昨日、リンクを外してしまったのですが、、、それが原因でしょうか。。。
昨日の時点では、同じノードでした。

# chmod 6555 /bin/passwd
# ls -ali | grep passwd
        313716 -r-xr-xr-x 1 root 96392 Nov 16 11:57 nispasswd*
        313666 -r-sr-sr-x 1 root 96392 Feb 24 1999 passwd*
        313717 -r-xr-xr-x 1 root 96392 Nov 16 11:57 yppasswd*

No. 546 # イプサム 1999/11/16 (火) 17:02
mmさん、ありがとうございます。
UNIX系では、無いのですかねぇ〜。
残念です。

No. 547 # 68user 1999/11/17 (水) 02:43
> 昨日、リンクを外してしまったのですが、、、それが原因でしょうか。。。
多分これが原因じゃないとは思うんですが、元に戻すには
    # rm nispasswd yppasswd; ln passwd nispasswd; ln passwd yppasswd
です。で、どういうエラーなのかいまいち掴めないんですが、
> 「passwd(SYSTEM): ○○○○ does not exist アクセス権が与えられていません。」
○○○○ には何が入るんですか? ユーザ名?

もし NIS 使ってたり、shadow 化してるなら、原因を突き止めづらいですね。
まわりのサーバと /etc のパーミッションを見比べてみてはどうでしょう。

# こーゆーときは truss が便利なんだけど、suid プログラムには
# truss 使えないのね…。

> spawn系の関数は、MS-DOSに特有のものです。
なるほど。ラクダ本の TCP サーバの例で sub spawn というのが
あるんで、C の新しい関数で似たものがあるのかと思ってました。

No. 548 # GAT 1999/11/17 (水) 18:18
始めまして。
「ネットワークプログラミングの基礎知識」
非常に面白かったです。
これからもがんばってください。>68userさん

さっそく質問なんですが。
うちにあるLinux(Vine 1.1)のApache1.3.3は
CGIが「自分 グループ 他人」の「他人」の権限で
動くんです。
ところがCGIが他人の権限で動くのはまずいらしい
ので自分権限で動くようにしたいのですがどうのように
設定ファイルを書きかえれば良いのでしょうか。。
調べてみた所,User命令
(http://japache.infoscience.co.jp/japanese_1_3/manual/mod/core.html#user)
とかでやるんでしょうか?

No. 549 # 68user 1999/11/17 (水) 18:50
> これからもがんばってください。
どもども。ありがとうございます。

> CGIが「自分 グループ 他人」の「他人」の権限で動くんです。
正確には、nobody 権限で動く、でしょうね。

> ところがCGIが他人の権限で動くのはまずいらしいので
これは管理者の方針によります。web しか置いていないサーバでは
各ユーザ権限で動かす方が安全でしょうけど、学校のようにメールや
いろんなデータが置いてあるサーバで各ユーザ権限で動かすのは
危険 (CGIに穴があるとメールなども全て見られてしまう)、
という考え方もあります。

> 調べてみた所,User命令
それは、例えば apache を nobody 権限でなく www (というユーザ)
の権限で動かしたい場合に使います。

例えば locate のデータなども、nobody 権限で作成されるので、
本来 apache は nobody 権限でなく www などの専用アカウントを
作って、その権限で動かした方が安全です。

で、結論としては
    http://japache.infoscience.co.jp/japanese_1_3/manual/suexec.html
を使います。これを使うと CGI/SSI ともに各ユーザ権限で動きます。

長々と語っておいてアレですが、僕は suExec を設定したことはないです。
上のリンクにはコンパイルがどうこうって書いてありますが、必要なのかなぁ。
ソース持ってきて
    % ./configure --enable-suexec
とするのではダメなんでしょうか。いろいろ試してみて下さい。

これとは別に、cgiwrap というのを使う方法もあります。
    ftp://ftp.win.or.jp/pub/network/www/cgiwrap

これだと CGI だけ各ユーザ権限で動きます。コンパイルして
/usr/local/apache/cgi-bin/cgiwrap にインストールして、
    http://localhost/cgi-bin/cgiwrap/~username/cginame.cgi
とすると、/~username/cginame.cgi が username の権限で動きます。
httpd.conf に
    AliasMatch "^/([^/]+)/cgi-bin/(.*)$" "/cgi-bin/cgiwrap/$1/$2"
などと書いておくと、/~username/cgi-bin/hoge.cgi にアクセスしただけで
各ユーザ権限で動かすこともできますね。

ん〜長くなってしまった。

No. 550 # mm 1999/11/17 (水) 21:27
>なるほど。ラクダ本の TCP サーバの例で sub spawn というのが
spawn ってどういう意味なんだろうと以前から疑問だったので調べたら、
魚などの産卵という意味なのですね。

MS-DOSの spawn は、exec(3)を真似たものだと思います。
MS-DOSの主なコンパイラで使えるようです。
exec系のライブラリもありますが、例えばBorland C++の場合
int spawnve(int mode, char *path, char *argv[], char *envp[]);
で、mode に P_WAIT を指定すると、親プロセスはそのままにして、
空きメモリで子プロセスを実行し、終了後に親プロセスに制御を戻します。
mode を P_OVERLAY にすると、execve() と同じになります。

No. 551 # みのる 1999/11/18 (木) 01:57
いつもありがとうございます。みのるです。

> 「passwd(SYSTEM): ユーザアカウント does not exist アクセス権が与えられていません。」の件。

リンク等、元に戻す前に、"passwd"コマンド復活しました。現在、以下の状態です。
313666 -r-sr-sr-x 3 root 96392 Feb 24 1999 nispasswd*
313666 -r-sr-sr-x 3 root 96392 Feb 24 1999 passwd*
313666 -r-sr-sr-x 3 root 96392 Feb 24 1999 yppasswd*

ただ、原因はまだ解りません。trussが使えたので、見てみてはいるのですが、不明です。
ここで質問なのですが、"root"以外のユーザでも、コマンド書換(もしくはアクセス権付与)は
可能でしょうか?私どものサーバセキュリティ上に問題があるような気がしてなりません。

No. 552 # 68user 1999/11/18 (木) 18:32
> trussが使えたので
なるほど。root なら使えるんですね。

> "root"以外のユーザでも、コマンド書換(もしくは
> アクセス権付与)は可能でしょうか?
root 以外の一般ユーザが /usr/bin/passwd を書き換えたり、
パーミッションを変更させることができるか、ということですか?
もちろん普通は不可能ですが、セキュリティホールがある場合は
その限りではありません。

「passwd が効かなくなった=クラック」というわけでも
ないので、しばらく様子を見てはどうでしょう。

No. 553 # GAT 1999/11/19 (金) 02:40
>68user 1999/11/17(水) 18:50
>> CGIが「自分 グループ 他人」の「他人」の権限で動くんです。
>正確には、nobody 権限で動く、でしょうね。
nobody権限というんですか。。
知らなかった(^^;

>> ところがCGIが他人の権限で動くのはまずいらしいので
>これは管理者の方針によります。
むむー
なるほど。
ケースバイケースとかいうやつですか。

>で、結論としては
> http://japache.infoscience.co.jp/japanese_1_3/manual/suexec.html
>を使います。これを使うと CGI/SSI ともに各ユーザ権限で動きます。
>
>長々と語っておいてアレですが、僕は suExec を設定したことはないです。
>上のリンクにはコンパイルがどうこうって書いてありますが、必要なのかなぁ。
>ソース持ってきて
> % ./configure --enable-suexec
>とするのではダメなんでしょうか。いろいろ試してみて下さい。
suEXEC。これですか
Apacheのバージョンアップとともに試してみます。
上手くいったら報告に参りたいと思います。

>これとは別に、cgiwrap というのを使う方法もあります。
> ftp://ftp.win.or.jp/pub/network/www/cgiwrap
>
>これだと CGI だけ各ユーザ権限で動きます。コンパイルして
>/usr/local/apache/cgi-bin/cgiwrap にインストールして、
> http://localhost/cgi-bin/cgiwrap/~username/cginame.cgi
>とすると、/~username/cginame.cgi が username の権限で動きます。
>httpd.conf に
> AliasMatch "^/([^/]+)/cgi-bin/(.*)$" "/cgi-bin/cgiwrap/$1/$2"
>などと書いておくと、/~username/cgi-bin/hoge.cgi にアクセスしただけで
>各ユーザ権限で動かすこともできますね。
suEXECのインストールに失敗したらこちらも試してみます。

No. 554 # 68user 1999/11/19 (金) 03:38
> http://japache.infoscience.co.jp/japanese_1_3/manual/suexec.html
やっぱりこれって古いのね。英語版の方を見て下さい。
    http://japache.infoscience.co.jp/apache/docs/suexec.html

うちでも apache1.3.9 を入れてみましたが、configure,make,make install で
簡単にインストールでき (configureのオプションを付けたり、httpd.conf の
手直しはしましたが)、suExec もうまく動きました。

> nobody権限というんですか。。
わかっておられるかもしれませんが念のため書いておきますと、他人の権限で
動くことを「nobody 権限」と呼ぶのではないです。実際に nobody という
アカウントは実在しており (see /etc/passwd)、その権限で httpd は動いている、
ということです。

なんで nobody で動くかというと、httpd.conf に
    User nobody
と書いてあるからです。

No. 555 # GAT 1999/11/21 (日) 04:51
ちょっと時間が取れなくて
返事遅れました。(_ _)
apache1.3.9は普通に?
configure,make,make install
でインストールできました。
suEXECも無事インストールできました。
CGIなどが各ユーザー権限で動いてました。
ありがとうございます。

>わかっておられるかもしれませんが念のため書いておきますと、他人の権限で
>動くことを「nobody 権限」と呼ぶのではないです。実際に nobody という
>アカウントは実在しており (see /etc/passwd)、その権限で httpd は動いている、
>ということです。
えぇ。その辺は大丈夫です。

No. 556 # 九面で迷ってるオレ 1999/11/21 (日) 14:20
ジェダイナイト、9面のシークレットエリア誰か教えて下さい。

No. 557 # ムチなチュボ 1999/11/23 (火) 23:32
ネットワークプログラミングの基礎知識、凄いです。素晴らしいです。
私のような無知にでもできてしまってちょっと怖いです。
(ほとんど切り貼り状態なんですが・・)
FTPの項についてなんですが
「# FTPサーバに、子プロセスが待っているIPアドレスとポートの情報を渡す」
というのがありますよね。ftptras.plで初めて子プロセスは出てくるのでは。
それ以前の例示には「子プロセス」というコメントは必要無いのでは。
(ちょっとここで悩んでしまったので・・・。)

No. 558 # 68user 1999/11/23 (火) 23:51
> それ以前の例示には「子プロセス」というコメントは必要無いのでは。
どもども。ミスですね。直しておきます。

最初は fork しないと ftp クライアントは作れないと思ってました。
結局それは誤解だったので書き直したのですが、コメントの修正を
忘れてたようです。

# ftptrans で fork してるのも怪しい。ほんとに1プロセスで
# できないのかなぁ?

No. 559 # ムチなチュボー 1999/11/25 (木) 00:01
う〜〜ん。
ローカルのホスト名を得るにはどうすれば良いですか?
開いたSOCKETから手に入れる以外に適当な方法て無いですかしらん。
シェルコマンドは使わずにperlの関数だけで。

RFCの日本語訳ってほんと便利ですよね。感謝しながら読んでます。
PASVの返事て227だけみたいですね。あとは全部エラーみたい。
それと(x,x,x,x,x,x)の「括弧」が付かない場合もあるようですね。
正規表現もむつかしいけど頑張ってるとこおろです。

No. 560 # 68user 1999/11/25 (木) 01:31
> ローカルのホスト名を得るにはどうすれば良いですか?
試してませんが、とりあえず
    http://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-2.html#ss2.24
    http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq9.html#How_do_I_find_out_my_hostname_do
ここらあたりでうまくいかないですか?

> あとは全部エラーみたい。
> それと(x,x,x,x,x,x)の「括弧」が付かない場合もあるようですね。
なるほど。ところで、こーゆーのがネットワークプログラムのヤな
ところですよね。相手があってのものだから「これで正しいかどうか」
「完璧かどうか」がわからないという。

あと、真面目に作って配布でもするつもりなら
    http://hp.vector.co.jp/authors/VA002682/rfc1123j.htm
も読んで下さい (もう読んでるかもしれませんが)。

# あと、data-connection の peer-port が 20(ftp-data) かどうかの
# チェックもね。

No. 561 # NET放浪人 1999/11/26 (金) 17:44
68USERさんの中で最も得意なプログラミング言語はなんですか?

Prev< No. 545〜561> Next  [最新発言に戻る] [過去ログ一覧]