2007-11-05 調子よくないなぁ。
何故だ。
◆ [ネタ] ちゅるやさん、とら1号店同人誌ランキングで1位
まぁ、ちゅるやさんだし(笑)
◆ [ネタ][情報] 無線LANのWEP/WPAキーを表示するフリーソフト「WirelessKeyView」
WEPの解析が簡単なのは有名な話だが、WPAも解析できるのかー。
……と思ったら、解析じゃなくて、ローカルにある物を取得するっぽいのね。
なーんだ。
自爆して忘れた時は便利かもしれず……と思ったが、うちのAirStationはwep/wpaの設定画面でソースコード読むと、hiddenにパスワードの値がもろに書かれているので、あんまり役に立たず(笑)
◆ [ネタ] 初音ミクonlyイベントに行ってきた
あ、忘れてた(ヒドイ
関連:初音ミクイベント「THE VOC@LOiD M@STER」は大盛況 ミクイベント、行列やべーーー 「どんだけ ミク好きなのかと…」
◆ [日記][FreeBSD] djbdnsの設定
具体的にはtinydnsとaxfrdnsな。
とりあえず、/usr/ports/dns/djbdnsでmake install
rehashしたあと、tinydns-conf tinydns tinydns-log /usr/service/tinydns IPでサクッと作成
んでもって、/usr/service/tinydns/logでmv main /var/log/tinydns;としておいて、runの ./mainってなってるところを/var/log/tinydnsと書き換え。/serviceでln -s ../usr/service/tinydns .として起動
おっと、忘れてた。/usr/service/tinydns/rootでmakeとしてとりあえずからのデータを作っておきます。
起動を確認したので、次はaxfrdns
これもaxfrdns-conf axfrdns axfrdnslog /usr/service/axfrdns /usr/service/tinydns IPとしてサクッと終了。
/usr/service/axfrdnsでmakeと入力して、tcp.cdbを作る。んでもって、上と同じパターンで、/usr/service/axfrdns/logでmv main /var/log/axfrdns、runの./mainを/var/log/axfrdnsと書き換え、と。
んで、/serviceでln -s ../usr/service/axfrdns .を実行しておしまい。
よし、DNS終わり。
◆ [日記][FreeBSD] Apacheの設定
/usr/ports/www/apache20でmake configureってやったら、autoconfが無いと言われ、autoconfはgm4が無いと言われapacheに戻ってきたらhelp2manが無いと言われ(笑)今度はexpatが無いと言われ……言われすぎだよ(笑)
んでもって、makeのオプションはこんな感じで
make configure WITHOUT_PROXY=yes WITHOUT_DAV=yes WITH_SUEXEC=yes SUEXEC_DOCROOT=/cgiroot SUEXEC_USERDIR=htdocs SUEXEC_UIDMIN=UIDMIN SUEXEC_GIDMIN=GIDMIN WITHOUT_IPV6=yes
んでもって、このへんからsuexec用のパッチを落としてきて、work/httpd-2.0.61/suportで、patch < suexec_chroot.2.patch
なんか、パッチ当てたところが全部CR+LFになってる(笑)のでLFに書き換え(笑)
としたところで、複数ディレクトリに対応していない事実に気づく(笑)
というわけで、サクッと改良。
いつの間にか2.0.61になってたのねん、といいつつ書き直し。なんかいっぱいはまる。一番はまったポイントは、
if(strncmp(AP_DOC_ROOT,*chroot_path,sizeof(AP_DOC_ROOT)-1) != 0){
を、間違えて
if(strncmp(AP_DOC_ROOT,*chroot_path,chroot_dir_len-1) != 0){
と書いてしまい、CHROOT_DIR not in AP_DOC_ROOT(compile configuration error)に悩まされた(笑) 今のバージョンではなおしてあります(笑)
んでもって、続きな。
work/httpd-2.0.61/suportで、patch < suexec_chroot.2-2.patch、suexec.cでchroot_dir_listを書き換え。最後の/を忘れないように。
んでもって、make install WITHOUT_PROXY=yes WITHOUT_DAV=yes WITH_SUEXEC=yes SUEXEC_DOCROOT=/cgiroot SUEXEC_USERDIR=htdocs SUEXEC_UIDMIN=UIDMIN SUEXEC_GIDMIN=GIDMIN WITHOUT_IPV6=yes
んで、/etc/rc.confにapache2_enable="YES"を追加。
cd /usr/local/etc/apache2としておいて、mkdir virtual
httpd.confにこんな行を追加
Include etc/apache2/virtual/index.conf
これで、virtual/index.confを勝手に読み込みに行くようになる。
ついでなのでhttpd.confをいじくり回す。
Timeout 60
KeepAliveTimeout 5
Listen IP:80
#LoadModule charset_lite_module libexec/apache2/mod_charset_lite.so
#LoadModule deflate_module libexec/apache2/mod_deflate.so
#LoadModule mime_magic_module libexec/apache2/mod_mime_magic.so
#LoadModule usertrack_module libexec/apache2/mod_usertrack.so
#LoadModule info_module libexec/apache2/mod_info.so
#LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
#LoadModule negotiation_module libexec/apache2/mod_negotiation.so
#LoadModule speling_module libexec/apache2/mod_speling.so
#LoadModule userdir_module libexec/apache2/mod_userdir.so
ServerAdmin 自分のメールアドレス
ServerName 自分のホスト名:80
DocumentRoot "適切なディレクトリ"
<Directory />
Options Options FollowSymLinks
DirectoryIndex index.html
HostnameLookups double
ErrorLog /var/log/httpd/error.log
LogFormat "%h (%a) %l %u %t \"http://%v%U\" (\"%{Host}i\") \"%f\" \"%r\" %>s %b %X \"%{Referer}i\" \"%{User-Agent}i\"" conbinedfile
LogFormat "%h %l %u %t \"%m http://%{Host}i%U %H\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" analyzed
#CustomLog /var/log/httpd-access.log combined
CustomLog /var/log/httpd/access/server.log conbinedfile
#ServerTokens Full
ServerTokens Prod
#ServerSignature On
ServerSignature Off
#IndexOptions FancyIndexing VersionSort
NameVirtualHost *
その他、aliasとかscriptaliasとかAddIconByEncodingとかAddIconByTypeとかAddIconとかDefaultIconとかReadmeNameとかHeaderNameとか全部コメントアウト。
余計なモジュールはカット。ログは取れる物は全部保存。外向けにはバージョン情報も何も公開しない、と。
んでもって、virtual/index.confはこんな感じに設定
<VirtualHost *>
ServerAdmin メールアドレス
DocumentRoot DocumentRootと同じもの
ServerName サーバのホスト名
</VirtualHost>
Include etc/apache2/virtual/servers/http.*.conf
で、virtualhostを使う時はvirtual/servers/の中にhttp.ほげほげ.confってファイルで宣言すればよい。
apachectl -tで設定ミスが無い事を確認。LanguagePriorityとForceLanguagePriorityのコメントアウトを忘れていた(笑)
というわけで、今日の設定はここまで。
CGIがちゃんと動くかどうかのチェックは明日に回し。
suexecのパッチ検証も明日にパス(笑)
動作確認した。
うっかりはまったポイントは、chrootした後にperlが無かった事だ(笑)
failed to open log file
fopen: No such file or directory
と言われて、悩んださ!!#!/usr/local/bin/perlとしてたので、/usr/local/bin/perlが開けないよエラーだったのだな(笑)
◆ [日記][FreeBSD] FTPの設定で忘れてた(笑)
/etc/shellsに/sbin/nologin_shを追記、ln -s /sbin/nologin /sbin/nologin_shと追加。
shellsに入ってないユーザは拒否られるんでした。
◆ [日記][FreeBSD] nullfs使いまくり。
何故かとゆーと、suexecなCGIを使う際には、 SUEXEC_DOCROOT=/cgirootで指定したディレクトリ以下にファイル(ディレクトリ)が無いとあかんのな。
でも、実際にデータを置くのは、/usr/home/ituki/htdocsだったりするわけです。最初は/cgirootからln -s /usr/home/ituki/htdocs itukiとかやってたんだけど、suexecは「実際のパス」を拾ってきてしまうため、実行時には「/usr/home/ituki/htdocs/ほげほげ.cgi だよん。/cgirootの下じゃねーじゃねーかよ!」というメッセージを吐いて動いてくれないのな。
で、/usr/home/ituki/htdocsは当然、そこでディスクが切ってある訳じゃないから、どうしようかと悩んで、
/etc/fstabにこんな風に書いて解決。
/usr/home/ituki/htdocs /cgiroot/ituki nullfs rw 2 2
早い話が、nullfsってのを使って、/cgiroot/itukiに/usr/home/ituki/htdocsをmountさせたと。これでシンボリックリンクを辿るわけではないので、/cgiroot/ituki/ほげほげ.cgiだよん、と認識してくれる。プログラム的に言うと、getcwdしたときの戻り値が(シンボリックリンクだと)/usr/home/ituki/htdocsになるのに対し、nullfsでマウントかけると/cgiroot/ituki/になるという話。
quota関連は/usr/home/ituki/htdocsの制限になるし、この方法は結構簡単にできる回避策っぽい。nullfs最高ヽ(´ー`)ノ
でも気をつけて使わないと、簡単にループ構造を作れてしまいそう(笑)