Apache関連 Part8
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2006/01/04(水) 16:46:23http://httpd.apache.org/
HTTP Serverの最新Versionは
Apache/2.2.0
Apache/2.0.55
Apache/1.3.31
●まずはマニュアル嫁。
http://httpd.apache.org/docs/ Apache 1.3
http://httpd.apache.org/docs/2.0/ Apache 2.0
http://httpd.apache.org/docs/2.2/ Apache 2.2
●「自分」でバージョンぐらい調べるれ。
httpd -h
httpd -V コンパイル条件など詳細な情報
Apache関連 Part7
http://pc8.2ch.net/test/read.cgi/unix/1108649446/
Apache関連 Part6
http://pc5.2ch.net/test/read.cgi/unix/1084829611/
0220名無しさん@お腹いっぱい。
2006/02/11(土) 01:38:21現在下記の内容を httpd.conf に記述しております。
------------------
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteLog "logs/rewrite_log"
RewriteLogLevel 0
RewriteCond %{HTTP_HOST} ^host.explet.com(.*)
RewriteRule ^(.*)?$ https://host.explet.com:444$1 [R]
RewriteCond %{HTTP_HOST} !www.explet.com$
RewriteRule ^/(.*)?$ http://%{HTTP_HOST}/$1 [L,R]
</IfModule>
--------
上記の設定で、
https://host.explet.com/ 左記へアクセスすると
https://host.explet.com:444/ へ変換されるのですが、
GETでアクセスする分には問題ないのですが、
POSTでアクセスした場合、パラメータが全て破棄されております。
例えば hoge.html 内に
<form action="https://host.explet.com/hoge.cgi" method="post">
・・・・
</form>
と記述し、submit しても key=value が一切入ってきません。
mod_rewrite の設定で 何か問題があるような気がするのですが、
お気づきの箇所等ありましたらご教授下さい。
0221220
2006/02/11(土) 01:41:40すいません。
-----
OS : CentOS4.2
Apache/2.0.52
0222名無しさん@お腹いっぱい。
2006/02/11(土) 01:58:55でもものによっては記述がきちゃなくなるんだよな。
それでも解決できるから、俺はmod_rewriteはいまだに使えない。
0223220
2006/02/11(土) 02:10:59mod_proxy で とりあえず解決しました。。
0224名無しさん@お腹いっぱい。
2006/02/11(土) 22:19:56次みたいな書き方は有効(***parameter 100が有効)なんでしょうか?
(モジュールやディレクティブによるのでしょうか?)
***moduleはデフォルトではoffとします
<Directory />
***module on
</Directory>
<Directory /home/user>
***parameter 100
</Directory>
0225名無しさん@お腹いっぱい。
2006/02/11(土) 23:06:12何がしたいのか分からんが、こういう書き方は参考になりまつか?
<Directory "/home/*/">
***module on
***parameter 100
</Directory>
もしユーザ毎に違う parameter 値をセットしたいなら、個別に
<Directory> を記述するしかないですねぇ。
0226名無しさん@お腹いっぱい。
2006/02/12(日) 12:30:55CGIのパスがDOC_ROOT/USERDIR_SUFFIXで始まっているかどうかをチェックしていて、
バーチャルホストの場合は、
DOC_ROOTで始まっているかどうかをチェックしているようなんですが、
バーチャルホストの方が制限が弱いのはどういう理由でしょうか?
UserDirの方もDOC_ROOTのみを判断するようにパッチを当てようと思うのですが、
これによって予期せぬセキュリティホールができるなんてことはあるでしょうか?
0227名無しさん@お腹いっぱい。
2006/02/12(日) 13:00:57>CGIのパスがDOC_ROOT/USERDIR_SUFFIXで始まっているかどうかをチェックしていて、
$HOME/public_html にあるかどうかはチェックしてるけど、
document root の下にあるかどうかは見てないぞ。
0228名無しさん@お腹いっぱい。
2006/02/12(日) 13:03:01詳しくないのですが、その「チェックしているようなんですが」というのは、確実ですか。
ttp://httpd.apache.org/docs/2.0/ja/suexec.html#install
--with-suexec-userdir=DIR
の説明からすると、ちゃんと検証してる (少なくともそのつもり) じゃないでしょうか。
ここより、開発のMLにポストしてみたらどうでしょう。
0229名無しさん@お腹いっぱい。
2006/02/12(日) 13:05:04> suEXEC コードの改造
> 繰り返しますが、何をやろうとしているか把握せずにこれをやると 大きな問題を引き起こしかねません。 可能な限り避けてください。
とありますね。
0230226
2006/02/12(日) 13:21:52すいません、おっしゃるとおりでした。
>>228
227さんの部分を訂正すればほぼ確実です、ソースを確認しましたので。
PHPばっかり弄っててCは初さわりなんですが、若干コードを読めて感動しましたw
開発関係ですか、考えてもみませんでした。
>>229
そこが怖いですね、ただ今回の場合、
USERDIR_SUFFIXはコンパイル時に指定できるので、
USERDIR_SUFFIXを空にすれば同じことが実現できそうな気がします。
しかし、それでも完全に把握してないと何か起きそうで怖いですね・・・
0231226
2006/02/12(日) 13:38:19を空で指定したら
cannot get docroot information suexec
が出てしまいました・・・orz
suexec.c の ((chdir(USERDIR_SUFFIX)) != 0) というところで
ひっかっかってる予感です、やっぱりソースを弄らなければ orz
0232名無しさん@お腹いっぱい。
2006/02/12(日) 13:40:24>USERDIR_SUFFIXを空にすれば同じことが実現できそうな気がします。
$HOME/public_html ではなく $HOME の下にあるかどうかのチェックに
したいということか? そんなことすると、suexec でない CGI の中で、
system("suexec user group bin/hoge");
のように suexec のバイナリを直接指定して実行すると、
たぶん user の権限で /home/user/bin/hoge が動いちゃうぞ。
いや、確認してないけど。
public_html/fuga.cgi ならば、そういうふうに実行されても
問題ないように作られてるだろうけど、bin/hoge がそうなってる可能性は皆無だ。
0233名無しさん@お腹いっぱい。
2006/02/12(日) 13:47:160234名無しさん@お腹いっぱい。
2006/02/12(日) 13:53:13http://vhost.example.net/~user1 より
http://user1.vhost.example.net/ にしちゃう事が多いからとか?
0235226
2006/02/12(日) 14:22:11> したいということか?
はい、そのとおりです。
/home/user/abc/public_html
/home/user/def/public_html
上の両方でバーチャルホストを使わずに
suexecを使用したいんです。片方だけなら
USERDIR_SUFFIX=abc/public_html
にすればいけたんですが、2つともとなるとSUFFIXを空にするしか
方法がないような気がするんです。
実際suexec.c の ((chdir(USERDIR_SUFFIX)) != 0) を削除して
動作確認したら正常に動作しました。
でも
> そんなことすると、suexec でない CGI の中で、
てなことが発生するわけですね・・・・
何か良い方法はないでしょうか・・・
この問題だけならhttpd.confでCGIを許可するディレクトリを適切に
設定すればなんとかなるような気もしますが。
0236名無しさん@お腹いっぱい。
2006/02/12(日) 15:27:050237名無しさん@お腹いっぱい。
2006/02/12(日) 19:29:02正しくないね。suexec が実行されたとき、その実行した人の名前は確認してる。
configure するときに、suexec-caller とかそんな感じのあったでしょ?
0238名無しさん@お腹いっぱい。
2006/02/12(日) 23:57:42これはふつうーは --with-suexec-caller で指定するユーザと一致するでしょ。
0239名無しさん@お腹いっぱい。
2006/02/13(月) 00:35:41(゚Д゚)ハァ?
0240237
2006/02/13(月) 07:44:09あぁ、言いたいことは分かりますた。漏れが勘違いしてた。
そうすると「suexec でない CGI」をなくすために、
suexec を使う/使わないサイトを1台の鯖に混在させない
ようにする必要がありますねぇ。使うならもう全員強制と。
# 普通はそうだと思うけどね。
そんでもって suexec を 4710 apache:apache にでもしておく?
これは気休めみたいなもんだけど。
0241名無しさん@お腹いっぱい。
2006/02/13(月) 10:12:450242名無しさん@お腹いっぱい。
2006/02/13(月) 10:44:380243名無しさん@お腹いっぱい。
2006/02/13(月) 10:57:29/usr/bin/id を /home/hoge/public_html/id にコピー。
んで、以下の php スクリプトを実行。mod_php なので apache の権限で実行される。
<?php
header('Content-Type: text/plain');
system('/usr/bin/id');
chdir('/home/hoge/public_html');
system('/usr/local/apache2/bin/suexec \~hoge user id');
?>
結果。
uid=80(www) gid=80(www) groups=80(www)
uid=1000(hoge) gid=1000(user) groups=1000(user)
0244名無しさん@お腹いっぱい。
2006/02/13(月) 11:45:16この時点で root じゃないのだが
0245名無しさん@お腹いっぱい。
2006/02/13(月) 11:52:55ないんだ?
どうやってやるの?
0246名無しさん@お腹いっぱい。
2006/02/13(月) 12:02:43>問題ないように作られてるだろうけど、bin/hoge がそうなってる可能性は皆無だ。
この理論だとバーチャルホストの場合も同じ問題が発生するんじゃね?
0247名無しさん@お腹いっぱい。
2006/02/13(月) 12:35:35そうだろうね。
バーチャルホストの場合は --with-suexec-docroot で指定したディレクトリ以下の
コマンドしか実行できない。ここのディレクトリ以下に自分の権限で
他人が実行するとヤバいようなものが置いてあるとまずい。
なので、バーチャルホスト用に専用のディレクトリを用意してやって、
その下にある実行ファイルは所有者の権限で実行されてしまっても
問題ないものだけにしないといけない。
で、ためしに suexec-docroot でぐぐってみたら、/home を指定している例が
トップにひっかかった。ヤバい。
0248名無しさん@お腹いっぱい。
2006/02/13(月) 13:23:46大部分がそれ指定してると思うよ、
実は俺もその一人。
でもpublic_htmlをかませたら問題なくなる部分がちょっと上手く理解できないのだけど。
0249237
2006/02/13(月) 15:53:170250名無しさん@お腹いっぱい。
2006/02/13(月) 15:59:120251名無しさん@お腹いっぱい。
2006/02/13(月) 23:17:29任意のコマンドを実行できる仕組み(php等)を提供してはいけない。
原理を知っていれば当然のこと。ヘボはサーバ管理するな。
(CGIのphpなら可)
0252名無しさん@お腹いっぱい。
2006/02/14(火) 10:43:089割のホスティング会社がひっかかるね
0253名無しさん@お腹いっぱい。
2006/02/14(火) 11:05:27phpはcgi版のみでやってた。
0254253
2006/02/14(火) 11:08:11phpをhttpサーバから見えるところに置けば
cgi版であることに気が付かない(先頭の#!/ が無くても動く)
まあ認証とか制限あるからそれでひっかかるかもしれんが。
見えるとこに置くとphp自身のセキュリティホールも気遣わなきゃならんかったが
0255名無しさん@お腹いっぱい。
NGNGhttp://svn.apache.org/repos/asf/httpd/httpd/trunk/CHANGES
*) Authz: Mark the directives 'Order', 'Allow', 'Deny' and 'Satisfy' as
deprecated and move them into the new module mod_access_compat which
can be loaded to provide backwards compatibility for these directives.
[Brad Nicholes]
*) Authz: Added the new authz providers 'env', 'ip', 'host', 'all' to handle
host-based access control provided by mod_authz_host and invoked
through the 'Require' directive. [Brad Nicholes]
0256名無しさん@お腹いっぱい。
2006/02/14(火) 15:58:29Allow from example.net
Deny from deny.example.net
みたいなのはどう実現するようにするんだろ?
0257名無しさん@お腹いっぱい。
2006/02/14(火) 16:10:010258名無しさん@お腹いっぱい。
2006/02/14(火) 16:21:30example.net:来んなボケ
example.com:時々来ていい
example.jp:ウフフ?
0259名無しさん@お腹いっぱい。
2006/02/14(火) 16:37:22いや、Requireを使うみたいにいっとるやんけ。
0260名無しさん@お腹いっぱい。
2006/02/14(火) 16:41:54Require entity-name [entity-name] ...
だから、別になんとでもなるか。
0261名無しさん@お腹いっぱい。
2006/02/14(火) 23:19:22なんで?
0262名無しさん@お腹いっぱい。
2006/02/16(木) 03:38:11動かんはずよね?なぜか動くんだが・・・
0263262
2006/02/16(木) 04:10:42apacheの起動ユーザはapacheだし、ほわい?
0264262
2006/02/16(木) 10:54:38こんなエラーだったんで、ちゃんと動作していないみたい。
でも普通Forbiddenエラーがでるもんじゃないの?
Warning: Unknown(/home/hoge/public_html/test.php): failed to open stream: Permission denied in Unknown on line 0
Warning: (null)(): Failed opening '/home/hoge/public_html/test.php' for inclusion (include_path='.:/usr/share/pear') in Unknown on line 0
0265名無しさん@お腹いっぱい。
2006/02/16(木) 17:11:150266名無しさん@お腹いっぱい。
2006/02/16(木) 17:39:18考えてから質問してね。
そして考えてもわからなかったらぐぐってね。
ぐぐってもダメだったら、もう一度考えて、試して、
それでもわからなかったときに質問してね。
0267名無しさん@お腹いっぱい。
2006/02/16(木) 17:44:41ヒント:
AddType text/x-server-parsed-html .html
Options Includes
>>266
という書き込みもムダだから、答えたくなかったら書き込まないでね。
0268名無しさん@お腹いっぱい。
2006/02/16(木) 18:40:28何年前からタイムスリップしてきた人ですか?
Y2K のパッチ当ては済みましたか?
0269名無しさん@お腹いっぱい。
2006/02/16(木) 19:34:26今でも使えるんだからいいじゃん。
わかっててそう書いてるんだよ。
後方互換性も大切にな。
0270名無しさん@お腹いっぱい。
2006/02/17(金) 04:36:42相談させてください。
SSI を実行させるディレクトリ設定は下記の通りです。
AllowOverride FileInfo AuthConfig Limit
Options ExecCGI FollowSymLinks Includes
この場合、
<!--#exec cmd="/path/test.cgi"-->
では、上手くいくのですが、
<!--#exec cgi="/path/test.cgi"-->
では、
[an error occurred while processing this directive]
のエラーが表示されてしまいます。
やりたいことは、
test.cgi&mode=1&id=1&coment=text
といった引数を渡したく cmd ではなく cgi として実行させたいのですが、
上記の設定で何か不備不足があるのでしょうか?
よろしくお願いします。
0271名無しさん@お腹いっぱい。
2006/02/17(金) 04:45:41拡張子を指定してではなく、すべてのファイルに対してできるようにしたいのですが
0272名無しさん@お腹いっぱい。
2006/02/17(金) 07:40:20だから、.htmlとか.htmとか、使用しているHTMLファイルすべてについて
AddType text/x-server-parsed-html(笑)を書く。
拡張子無視で全くすべてのファイルというわけにはいかない。
何故なら、そんなことをすると .gif .jpg .tar.gz等のバイナリファイルまで
parseされて、中身が壊れる可能性があるから。
0273名無しさん@お腹いっぱい。
2006/02/17(金) 07:56:14いや、そこは1つでいいけど、横に拡張子をつらつらと。。
0274名無しさん@お腹いっぱい。
2006/02/17(金) 07:58:27ttp://httpd.apache.org/docs/1.3/mod/mod_include.html
The include virtual element should be used in preference to exec cgi. In particular,
if you need to pass additional arguments to a CGI program, using the query string,
this cannot be done with exec cgi, but can be done with include virtual, as shown here:
<!--#include virtual="/cgi-bin/example.cgi?argument=value" -->
0275名無しさん@お腹いっぱい。
2006/02/17(金) 10:16:42apacheのerror_log見てみなよ
cgiは、ローカルのパスじゃなくて、URL指定と同じパスだよ
0276名無しさん@お腹いっぱい。
2006/02/17(金) 12:38:16ありがとうございます。
試してみましたが、状況変わらずでした。
エラーログに
unable to include "/path/test.cgi&mode=1&id=1&coment=text"in parsed file 呼び出し元ファイル
とあることからやはり cmd と同様に test.cgi&mode=1&id=1&coment=text を1つのファイルと見てしまうようです。
>>275
ありがとうございます。
エラーログの報告を忘れてました。申し訳ありません。
ローカルパスの場合は、
File does not exist /path/test.cgi
となっており、
URL 指定の場合は、
invalid CGI ref "http://example.jp/test.cgi&mode=1&id=1&coment=text" in 呼び出し元ファイル
File does not exist /path/test.cgi
になります。
URL の指定間違い等なのか?と考えましたが、コピーペーストでブラウザ直呼び出しすると
問題なく動作します。
(プログラム自体はコメント文をランダム表示させているモノです)
他に何か試せることは無いでしょうか?
0277名無しさん@お腹いっぱい。
2006/02/17(金) 12:41:52その例で言えば、/path/いらない
0278名無しさん@お腹いっぱい。
2006/02/17(金) 12:44:47付けたきゃ #include でやれば
0279名無しさん@お腹いっぱい。
2006/02/17(金) 12:47:14引数は ? から始まる、タイプミスとは思うが・・・
0280276
2006/02/17(金) 12:49:28すみません
File does not exist /path/test.cgi
は include virtual の際のエラーログでした。
よく見てみると File does not exist の際にディレクトリが1つ重複しておりました。
public_html
バーチャルルートの場所を勘違いしていたようです。
無事に解決することができました。
ありがとうございます。
0281名無しさん@お腹いっぱい。
2006/02/17(金) 12:51:15>>278
すみません。もう仰る通りでした。
本当にありがとうございました。
>>279
タイプミスです。本当に申し訳ないです。。。
0282名無しさん@お腹いっぱい。
2006/02/19(日) 17:17:130283名無しさん@お腹いっぱい。
2006/02/19(日) 20:23:050284名無しさん@お腹いっぱい。
2006/02/21(火) 05:47:47http://www.example.com/~user/
以外に、
http://user.example.com/
でもアクセスできるようにしたいのですが、どのように設定すればよいのでしょうか?
0285名無しさん@お腹いっぱい。
2006/02/21(火) 09:55:43つ[VirtualHost]
で、example.comのホスト名が何になっても良いようにDNSをワイルドカードで設定する
・・・たぶん出来ると思う^^;
0286名無しさん@お腹いっぱい。
2006/02/21(火) 13:28:37apache user.example.comでI'm feeling luckyしてみた。
ttp://www.kawaz.jp/pukiwiki/?mod_rewrite#content_1_4
0287名無しさん@お腹いっぱい。
2006/02/21(火) 16:37:17これを抑制する方法は無いでしょうか?
単に経路を暗号化したいだけなのですが・・・。
0288名無しさん@お腹いっぱい。
2006/02/21(火) 16:39:450289名無しさん@お腹いっぱい。
2006/02/21(火) 17:23:020290名無しさん@お腹いっぱい。
2006/02/21(火) 17:26:36んなもん >>289 以外に方法は無いと思うよ、というか、もしあったら、それは抜け道
なんじゃなかろうか。
ちなみに、企業のイントラネット内でそのような社内用の証明書をユーザにインストー
ルさせている事例は見たことあるよ。
0291名無しさん@お腹いっぱい。
2006/02/22(水) 01:10:090292名無しさん@お腹いっぱい。
2006/02/22(水) 02:34:100293名無しさん@お腹いっぱい。
2006/02/22(水) 09:43:22ttp://oresama.hopto.org/~sheel/directory/
どうやったらいいのでしょうか。
本人が「クラックしてください」と言っているので問題はありません。
0294名無しさん@お腹いっぱい。
2006/02/22(水) 09:44:59http://www.cacert.org/
だがしかし・・・w
0295名無しさん@お腹いっぱい。
2006/02/22(水) 10:08:06板違い。
初級ネット
http://pc8.2ch.net/hack/
0296名無しさん@お腹いっぱい。
2006/02/22(水) 10:14:55フィッシングサイト作る奴より金が無いなんて、話にならんよねぇw
0298名無しさん@お腹いっぱい。
2006/02/22(水) 10:53:43その板で既に似たような内容を見かけたけどなー
0299名無しさん@お腹いっぱい。
2006/02/23(木) 03:09:27.htaccessでディレクトリ単位でカスタマイズはできますか?
0300名無しさん@お腹いっぱい。
2006/02/23(木) 03:22:10やってみれ
0301名無しさん@お腹いっぱい。
2006/02/26(日) 15:10:525割の確率で読み込まれない。
例えば、abc.html を読み込むとそのページの半分の画像と
htmlタグの半分程度がちゃんと読み込めず、ぐちゃぐちゃのabc.htmlが
表示される。
これ原因なんだろ?
sslをかませなかったら何も何も起きないんだけど。
0302名無しさん@お腹いっぱい。
2006/02/27(月) 02:05:040303301
2006/02/27(月) 02:50:22コネクション数は足りてると思います、
Aliasで読み込んでるのが若干問題ありのような気がします。
/usr/share からひっぱってきているのですが。
httpd.confの内容を全部載せないと中々判断は難しいですよね・・・
0304301
2006/02/27(月) 03:17:090305名無しさん@お腹いっぱい。
2006/02/27(月) 03:22:140306301
2006/02/27(月) 03:39:160307名無しさん@お腹いっぱい。
2006/02/27(月) 03:49:130308301
2006/02/27(月) 03:59:18上では画像半分が、といってましたがどうやら
スタイルシートのみが読み込めていないようです。
画像などはちゃんと読み込めてました。
このせいでレイアウトがぐちゃぐちゃになっていたようです。
0309名無しさん@お腹いっぱい。
2006/02/27(月) 20:20:26Content-Type: text/css
になってるか確認するとか。
0310名無しさん@お腹いっぱい。
2006/02/28(火) 03:02:57Apache付属のモジュールじゃなくて、サードパーティー性のモジュールについてなんですが
LoadModuleをhttpd.confに追加して apachectl graceful ってやると
子プロセスが起動→セグメンテーションフォルト が延々と続いて
一回止めて再起動するしかなくなってしまうモジュールがあるんですが、
LoadModule をいじってgracefulするときの注意点とか何かありますか?
あと、Apacheが動いたままPHPのアップデートを行っても同じようになることがあります。
0311名無しさん@お腹いっぱい。
2006/02/28(火) 03:24:00モジュールを追加、削除したなら stop, start の方が良いのでは・・・
もしくはそのモジュールの問題かな。
PHP に関しても別に不思議な現象ではないと思う。基本は再起動。
0312名無しさん@お腹いっぱい。
2006/02/28(火) 12:39:52にすると、どんなファイルでも実行許可になっているファイルはSSIが実行できるようになってしまうのでしょうか?
0313名無しさん@お腹いっぱい。
2006/02/28(火) 12:46:190314名無しさん@お腹いっぱい。
2006/02/28(火) 19:08:01image関連のファイルを一括して指定するにはどのように書けばいいのでしょうか?
0315名無しさん@お腹いっぱい。
2006/02/28(火) 21:52:49一括して指定、ってもう少し詳しく書けませんか。apache httpd の
どの機能で何したくてどの辺のディレクティブを使おうとしてるとか。
apache固有ではなく HTTPリクエストヘッダーのことでしたら
Accept: image/* でしょうかね。
ttp://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1
0316名無しさん@お腹いっぱい。
2006/02/28(火) 23:15:58プロセスのメモリ内配置が変わるから、
一旦綺麗にしたらんと調子悪いだろうね
0318名無しさん@お腹いっぱい。
2006/03/01(水) 01:28:390319名無しさん@お腹いっぱい。
2006/03/01(水) 08:18:04■ このスレッドは過去ログ倉庫に格納されています