|
> trussが使えたので なるほど。root なら使えるんですね。 > "root"以外のユーザでも、コマンド書換(もしくは > アクセス権付与)は可能でしょうか? root 以外の一般ユーザが /usr/bin/passwd を書き換えたり、 パーミッションを変更させることができるか、ということですか? もちろん普通は不可能ですが、セキュリティホールがある場合は その限りではありません。 「passwd が効かなくなった=クラック」というわけでも ないので、しばらく様子を見てはどうでしょう。 |
|
>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のインストールに失敗したらこちらも試してみます。 |
|
> 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 と書いてあるからです。 |
|
ちょっと時間が取れなくて 返事遅れました。(_ _) apache1.3.9は普通に? configure,make,make install でインストールできました。 suEXECも無事インストールできました。 CGIなどが各ユーザー権限で動いてました。 ありがとうございます。 >わかっておられるかもしれませんが念のため書いておきますと、他人の権限で >動くことを「nobody 権限」と呼ぶのではないです。実際に nobody という >アカウントは実在しており (see /etc/passwd)、その権限で httpd は動いている、 >ということです。 えぇ。その辺は大丈夫です。 |
|
ジェダイナイト、9面のシークレットエリア誰か教えて下さい。 |
|
ネットワークプログラミングの基礎知識、凄いです。素晴らしいです。 私のような無知にでもできてしまってちょっと怖いです。 (ほとんど切り貼り状態なんですが・・) FTPの項についてなんですが 「# FTPサーバに、子プロセスが待っているIPアドレスとポートの情報を渡す」 というのがありますよね。ftptras.plで初めて子プロセスは出てくるのでは。 それ以前の例示には「子プロセス」というコメントは必要無いのでは。 (ちょっとここで悩んでしまったので・・・。) |
|
> それ以前の例示には「子プロセス」というコメントは必要無いのでは。 どもども。ミスですね。直しておきます。 最初は fork しないと ftp クライアントは作れないと思ってました。 結局それは誤解だったので書き直したのですが、コメントの修正を 忘れてたようです。 # ftptrans で fork してるのも怪しい。ほんとに1プロセスで # できないのかなぁ? |
|
う〜〜ん。 ローカルのホスト名を得るにはどうすれば良いですか? 開いたSOCKETから手に入れる以外に適当な方法て無いですかしらん。 シェルコマンドは使わずにperlの関数だけで。 RFCの日本語訳ってほんと便利ですよね。感謝しながら読んでます。 PASVの返事て227だけみたいですね。あとは全部エラーみたい。 それと(x,x,x,x,x,x)の「括弧」が付かない場合もあるようですね。 正規表現もむつかしいけど頑張ってるとこおろです。 |
|
> ローカルのホスト名を得るにはどうすれば良いですか? 試してませんが、とりあえず 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) かどうかの # チェックもね。 |
|
68USERさんの中で最も得意なプログラミング言語はなんですか? |
|
elisp です。 …ウソです。perl か C ですけど、人に誇れるほどの レベルじゃないです。精進せねば。 |
|
色々ありがとうございました。 > 227だけみたい たしかに一番上の桁だけ見ろってRFCに書いてありました。 perlて俺のような無知な初心者にも優しい言語ですね! 構文規則が緩いっていうんですか、括弧とか適当でいいし。 とりあえず構文と関数のリファレンスさえあればなんとなく 出来てしまう。ありがたいことです。 まあ…そのおかげかperl使いな人も俺のような駄目パーラから 超スゴイ人まで腐るほど沢山居るらしくてperlなんか今更 「多少」使えても何の自慢にもならないみたいなんですが…。 でもでもこれからもperlで遊ぶぜえ〜。 じゃあさよならあ〜。 |
|
以前にPOSTに関して質問した者です。遅いレスですが…(^^; どうやら、ソケットに送るPOST〜$messageは、 個別に送った場合、途中の\r\nにHTTPDが反応してしまうようです。 なので、$sendとか、適当な変数に全部繋げて代入し、 print SOCKET $send; としなければならないようです。 HTTP/1.0を指定し、更にこの方法でやってみた所、POSTが成功しました。 ちなみに、HTTPバージョンを省略した場合は HTTP/1.1とみなされるみたいです。(全部そうとは限らない…かな?) |
|
> HTTPバージョンを省略した場合は HTTP/1.1とみなされるみたいです。 省略すると HTTP/0.9 になります。0.9 では GET 以外使えませんし、 ヘッダも送れません。例えば GET /~foo/index.html を送った時点で、サーバからレスポンスが返ってきます。なので、 > 途中の\r\nにHTTPDが反応してしまうようです。 これはそういうことじゃないでしょうか? なお、HTTP 0.9 で POST /~foo/index.html などとしようとすると、405 Method Not Allowed になるはずです。 |
|
というわけで、 > $sendとか、適当な変数に全部繋げて代入し、 > print SOCKET $send; としなければならない ということはあり得ないと思いますが、一応試してみたいので よろしければその掲示板の URL を教えて下さい。 |
|
おはようございます。 ネットワークプログラミングの基礎知識の C言語でHTTPクライアントを作ってみよう(2) ではperlと違いヘッダ部分が表示されてますよね? あれを本体部だけ表示するようにするにはどうしたらいいんでしょう? 色々やってみましたがどうも上手くいかなくて… 「UNIXの場合」はfgets関数をソケット読み出しにも使えますけど 某Windowsは勝手が違うんです。。 # どーみてもUNIXの方がやりやすい どんな感じかというのがhttp://www.nakka.com/inet/httpc.htmlの 赤系の色で 「/* サーバからデータを受信する処理 */」 とか書かれてる辺りです。 なんとなく見るとやりにくいのがわかるかと^^;; どうすればいいでしょうか? 思いついたのでいいですからレスください。 どうもアイデアが・・・・ |
|
while (1){ char buf[BUF_LEN]; int read_size; static int body_flg = 0; char *p; read_size = read(s,buf,BUF_LEN); if ( read_size > 0 ){ if ( body_flg ){ p = buf; } else if ( p = strstr(buf,"\r\n\r\n") ){ /* 空行はあるか? */ p+=4; /* \r\n\r\n の分先に進める */ read_size -= p-buf; /* サイズ調整 */ body_flg = 1; } if ( body_flg ){ write(1,p,read_size); } } else { break; } } こんな感じでどうでしょうか? |
|
あ、全然ダメじゃん。 > } else if ( p = strstr(buf,"\r\n\r\n") ){ buf は \0 で terminate されてないし、そもそも \r\n\r\n が1回で読める保証はなくて、ちょうど 境界にまたがってるかもしれない。 ま、そこらへんはよしなに。 |
|
pingコマンドでは、ホスト名を指定することによって、 そのホスト名(またはIPアドレス)との接続確認が できます。 これと同様に、そのホスト名(またはIPアドレス)の 特定のポート番号に対して、接続確認を行いたいの ですが、なにか良い方法ないでしょうか? |