FSWiki初期設置用CGI
- 投稿者: あき
- カテゴリ: 新規
- 優先度: 重要
- 状態: 提案
- 日時: 2006年01月23日 23時12分52秒
内容
初期設置用のスクリプト(Perl版)のCGI版です。
FSWikiが動作する環境を半自動で構築できます。
CGIですので、自動でできることには限りがあります(パーミッションの設定等はできません)が、その分、可能な限りの環境チェックは行っているつもりです。
また、CGIですので、FSWikiが動作する環境であれば事実上どのサーバでも動作します。(ホントかな?)
機能概要
FreeStyle Wiki CGI が動作する環境を自動構築します。
主な機能は次のとおり。
- 動作に不可欠な必須ディレクトリを生成します。
- 最初からあると便利なMenuやHeader、 Footerページなどを生成します。
- HTTP経由でCSSファイルが参照可能かチェックします。
- 環境内のディレクトリやファイルが、適切なパーミッション(参照/書込/実行権限)であるかチェックします。
- HTTPサーバがApacheの場合、.htaccessファイルを生成します。
- CGIファイルの先頭行をチェックし、必要であれば正しいPerlのパスに差し替えます。
- 既に稼働中の FreeStyle Wiki に対しても実行できます。セキュリティチェック用途としてもご利用頂けます。
更新履歴
- setup.zip(1002)
- 初版リリース。(Windows+IISでは動作しないかもしれません)
- setup_rev01.zip(952)
- 下記の修正を行いました。
- config_dir,data_dir内のファイルに対するパーミッションチェックが不足したので追加した。
- パーミッションの設定に関する説明を追加した。
- エラー、ワーニング、進捗情報等を<pre>タグで出力しないようにした。
- setup_rev02.zip(904)
- rev01の対応で修正ミスをしていましたので修正しました。
- setup_rev02a.zip(905)
- wiki.cgiがドキュメントルートに設置されていた際、CGIのパスを取得できない不具合に対応。(でも、まだ駄目かも…)
- setup_rev03.zip(2262) 最新版
- Socketモジュールが使用できない場合にエラーが出てしまう不具合を修正。チェックは甘くなるが、動作しなかった場合の修正候補を表示するよう対応。
詳細
使用方法としては簡単で、FSWikiアーカイブを設置したいディレクトリに展開しておき、本セットアップCGIをwiki.cgiが存在する場所にコピーして、ブラウザ上から本CGIを呼び出していただければ良いです。
但し、ブラウザ上から本CGIを実行するにしても、(CGIを動作させるなら基本中の基本ですが)最低限やっておかなければならないことはあります。それについては、下記の『起動方法』の欄にも記載していますので参考にしてください。
また、本セットアップCGIは、既に稼動中のFSWiki設置環境でも動作するよう配慮してあります。基本のディレクトリ構成を独自の構成に変更していても動作します。既存のFSWiki稼動環境のセキュリティ・チェック用途としてもご利用頂けます。
本CGIは下記の4つのフェーズ(ステップ)で構成されています。
- セットアップの開始
- CGIの選択と環境の確認
- 更新ルールの入力と更新実行
- セットアップの完了
『更新ルールの入力と更新実行』のフェーズまでは、環境を書き換えたりはしませんのでご安心下さい。(『更新ルールの入力と更新実行』のフェーズで[実行]ボタンをクリックしますと、環境を更新します)
尚、リリース直後(公開直後)は暫く、様々なバグを抱えている可能性があります。当面の間は、実行前に環境の全バックアップを行った後実行するか、または初期設定用途に限定してお使いください。
それから、皆様にお願いですが、私一人では様々な環境にて動作確認するのには限界があります。もし、使って頂いて無事動作した暁には、是非、その設置環境と結果をご一報下さい。もちろん、動かなかった場合もご一報ください。
使って頂いて、気付いた点やご要望などもあれば是非コメントください。「こんなチェックも入れた方がいいんじゃないの?」といった要望は大歓迎致です。
以上、よろしくお願い致します。
起動方法
ソース中のコメントの引用です。
本CGIを FreeStyle Wiki を展開したディレクトリの wiki.cgi が存在するディレクトリ に入れ、ブラウザ上から本CGIを表示させて下さい。 その際に、次の点を予め確認しておいて下さい、 ・サーバに FreeStyle Wiki 本体が展開されていること。 基本のディレクトリ構成から変更されていても動作します。 ・IISの場合、仮想ディレクトリに展開されていること。 HTTPサーバがIISの場合、ドキュメントルートではなく、仮想ディレクトリを作成して そこに FreeStyle Wiki 本体を設置する必要があります。 ・本CGIの先頭行に実行可能なPerlのパスが記載されていること。 (Apache等のサーバでは、CGIの先頭行にPerlのパスが記載されている必要があります) 「#!」以降が、Perlのパスです。 初期状態ではwiki.cgiのそれに合わせていますが、実行するサーバの環境と異なる場合、 適宜修正する必要があります。 例: 「#!/usr/bin/perl」 「#!/usr/local/bin/perl」 「#!C:/perl/bin/perl.exe」 ・本CGIに実行権限が無ければ与えて下さい。 (Unix系のOSでは実行権限を与えないと動作しません)
パーミッションの設定について
ソース中のコメントの引用です。
本セットアップCGIでは、 FreeStyle Wiki を安全に利用して頂くため、構成ファイル、 ディレクトリのパーミッション(参照/書込/実行権限)の確認を行っています。 FreeStyle Wiki を外部公開向けサーバに設置する場合、適切な設定を行って下さい。 (危険な設定での公開は、公開者自身だけでなく、踏み台として利用され、他の第3者 にも迷惑をかけてしまう危険性があります) 『パーミッション』という概念は、Unix系OSのみに存在する概念です。 Windows系OS(NTFS)には『アクセス許可』という別の呼び名で、同様の概念が存在しま す。呼び名は異なりますが、「参照/書込/実行の権限が設定できる」という意味では 同じようなものです。(しかし、設定方法はまるで違います) ここでは、初心者の方が填りやすいUnix系OSのパーミッションの設定方法について記載 しておきます。 パーミッションの解説: パーミッションの設定値は、3桁の数字で構成されています。 例)755 左の桁は、owner(所有者本人) 中の桁は、group(所有者が属するグループ) 右の桁は、other(第三者) をそれぞれ示します。 また、参照/書込/実行権限を次のように和で表現します。 参照権限(r) +4 書込権限(w) +2 実行権限(x) +1 7 → 4+2+1 → rwx → 参照書込実行全て可 6 → 4+2+0 → rw- → 参照書込のみ可(実行不可) 5 → 4+0+1 → r-x → 参照実行のみ可(書込不可) 4 → 4+0+0 → r-- → 参照のみ可(書込実行が不可) 0 → 0+0+0 → --- → 全て不可 また、上記のように、3桁の数字ではなく、視覚的に分かりやすように r, w, x, - のような文字の組み合わせでも表現したりします。 これらを組み合わせ指定して、安全性を高めて行くことになります。 パーミッションの指定例: 「パーミッションの設定」と一口に言っても、どの環境でも通用するような固定的な 設定、というものは実は存在しません。(これが、初心者を寄せ付けない最大の要因 です) 各設置環境毎に、そのサーバに応じた適切な設定を行ってやる必要があります。 では、結果を急ぐ方の為に、オーソドックスな設定例から先に紹介していくことにし ます。 fswiki/ 安全 <---------> 危険 attach/ 添付ファイル 701 707 777 777 … 600 606 666 777 pdf/ PDFファイル 701 707 777 777 … 600 606 666 777 tmpl/ テンプレート 701 705 755 777 … 600 604 644 777 backup/ バックアップファイル 701 707 777 777 … 600 606 666 777 data/ データファイル 701 707 777 777 … 600 606 666 777 log/ ログファイル 701 707 777 777 … 600 606 666 777 config/ 設定ファイル 701 707 777 777 … 600 606 666 777 theme/ テーマ 701 705 755 777 … 600 604 644 777 plugin/ プラグイン 701 705 755 777 … 600 604 644 777 lib/ ライブラリ 701 705 755 777 … 600 604 644 777 wiki.cgi CGIスクリプト本体 700 705 755 777 setup.dat 設定ファイル 600 604 644 777 一番左が最も安全で、一番右が最も危険です。 一番右側は外部公開向けサーバでは、絶対にやってはならない設定です。 どの設定で動作するかは、そのCGIを設置するサーバの設定によります。 一番右側の設定ならまずどの環境でも動作しますが、非常に危険です。 (気の利いたレンタルサーバ等ではこのような危険な設定に制限をかけ実行できない ようにして下さっているありがたいところもあります) 一般的なレンタルサーバでは、たいてい、左から2番目か3番目の設定を推奨されて います。ですが、もし、左から3番目の設定を『推奨設定』と謳っている場合でも、 念のため試してみて、左から2番目の設定で動作するのでしたら、その設定で運用す るようにして下さい。 最後に、一番左側の設定ですが、この設定で動作するサーバであるなら、それが最も 最も優秀です。 もし、この設定で動作するなら、迷わずこの設定にして下さい。 お使いのサーバがどのタイプか分からない場合は(本当はきちんと調べて頂きたいの ですが)、左側の設定から順に試してみて下さい。正常動作する限り、より左側の設 定で運用されることをお勧め致します。 尚、ここに挙げた設定例ですが、全てのサーバがこのどれかに当てはまる、と断言で きるものではありません。(悲しいことに、実は他にもパターンがあります) 業者様にきちんと確認をとるなり、パーミッションの概念についてきちんと勉強する なりして、安全な設定で運用して下さい。 一つアドバイスするとすれば、正常に動作する限り、より少ない数字での運用を心が けて下さい。 最後に: 本CGIではこれらパーミッションの設定を可能な範囲でチェックしています。 (必要な権限が許可されていなければエラーになりますし、余計な権限が設定されて いばワーニングを出します) 基本的には、この指示に従って設定を行って頂けると安全です。 但し、その際、極力真ん中の桁(所有者が属するグループ)の権限は極力「0」を設 定するようにして下さい。 設置サーバがWindowsの場合は、設定方法が異なりますが、Unix系OSと同様、権限の 確認は行っています。 設定方法に関してはここでは省略しますが、実行時のワーニング・エラー情報をご確 認のうえ、極力安全な設定にて運用されることを強く推奨致します。 ※上記説明に誤りを発見されました方は、どうかご一報下さい。 あまり、自信は無いです。
ライセンス
- GPL
対応バージョン
- 3.5.10
3.5.X系なら動作するのでは?
動作確認環境
- Solaris8+Apache1.?
- Windows2000+Apache2.?
- Windows2000+ANHTTPd1.42k
- WinXP Home(SP2)+IE6.0(SP2), FSWiki 3.5.8, 04WebServer, ActivePerl 5.8.7 for Win32 Build 813
にて概ね動作確認しています。残念ながら、現状ではWindows2000+IISではきちんと動作することを確認できておりません。(多分IISの設定が悪い?)
一人ではさまざまな環境での動作確認ができません。他にも動作した環境がございましたらご一報よろしくお願い致します。
コメント
- WinXP Home(SP2)+IE6.0(SP2), FSWiki 3.5.8, 04WebServer, ActivePerl 5.8.7 for Win32 Build 813 の環境で正常動作したみたいです。 - 名無しさん (2006年01月24日 00時44分09秒)
- コメントありがとうございます。動作して、少しホッとしています。04WebServerって、名前には見覚えがあるのですが、実物は今回(おそらく)初めて見ました。使い勝手良さそうですね。ということで興味があったので入れてみました。おぉ〜、動きました。標準でHTTPSに対応してるんですね。魅力的かも…。 - あき (2006年01月24日 07時43分23秒)
- 設定で、書き込みを許可していないのに、書き込みされますね。何故でしょう? サブディレクトリは対象外なのかな? - あき (2006年01月24日 07時43分42秒)
- 恐らく Win の仕様でしょうね。パーミッションなどの概念が乏しい WinOS では書き込み権限の設定とかが正常に動作しないです。ファイルを読み取り専用属性にしていても Perl で unlink 関数でも呼びだせば削除できてしまうみたいですし。 04WebServer って非常に使いやすいのですが現在開発が中止しているような感じです。オープンソースではありますが、開発環境を持っていないのでコンパイルも改造もできません。早く修正版アップしてくれないかなと思っているんですが。 - 名無しさん (2006年01月24日 23時43分17秒)
- なるほど、そういうことですか…。ま、ありがちな話ですね。しかし「開発が中止している」とは残念ですね。ドキュメントを見なくても設置ができて、かつ現在どのようなサービスがONになっているかも一目瞭然で、使い勝手はかなり良かったのですが…。セキュリティが重用視される分野のソフトなだけに、開発が途絶えているのはかなり痛いです。開発が再開されることを切に期待します。 - あき (2006年01月24日 23時51分47秒)
- WinXPHome では NTFS の詳細なアクセス権限を設定できないのですが Pro などだともう少し正常に動くのかな。 - 名無しさん (2006年01月24日 23時46分06秒)
- う〜ん、どうでしょう。おそらくProでも駄目な気がします。04WebServer自体、サーバとして実行するときのユーザを任意に指定することができないようですね。(ログイン中のユーザでサービスが提供されるみたい) そう言った意味では危険なのかな。あれ、ANHTTPdもそういった意味では同じみたい。使い勝手と安全性、どちらを取るかって感じなのかもしれませんね。 - あき (2006年01月25日 00時09分06秒)
- setup_rev01.zip(952)をリリースしました。修正内容に関しては更新履歴に書いてあるとおりです。 - あき (2006年01月25日 00時31分15秒)
- すみません。パーミッションのチェックが、まだ完全には機能していないようです。昨日入れた修正で、それまで動いていた所の一部が機能しなくなっています。今晩にでも対応します。ご迷惑お掛けして申し訳ございません。 - あき (2006年01月25日 08時36分14秒)
- 修正しました。setup_rev02.zip(904)です。 - あき (2006年01月25日 13時25分42秒)
- "Error:カレントディレクトリ(setup.cgi)のファイル一覧が取得できません。(内部エラー)"と表示されてしまいます。 - cadp (2006年02月02日 01時58分00秒)
- あちゃ〜、出てしまいましたかぁ。このエラー(内部エラー系)が出てしまうと辛いですね。エラーの内容的にはsetup.cgiが存在するシステム側のパスが取得できていないようです。想定外でした。m(- -)m ひょっとするとドキュメントルートにwiki.cgiを設置されているのでしょうか? それはともかく…、自信は無いのですが考え得る修正を一つ入れてみました。setup_rev02a.zip(905)で動作するか否か、試してみてもらえませんか?これで流してみて、それでも、"Error:カレントディレクトリ(.)のファイル一覧が取得できません。(内部エラー)"などと出るようであれば、本当に申し訳ないですが、このCGIの限界のようです。 - あき (2006年02月02日 07時21分01秒)
- 小生のサーバpでは、setup_rev02a.zipにしたら(内部エラー)が出ずにOKでした!動いてはいたものの、このチェックをかけたことによって設定に関しての不安感がなくなりました。ありがとうございます。 - じゅわ (2006年02月05日 23時46分29秒)
- コメントありがとうございます。「動いた」というコメントを頂けるととても安心できます。何か気が付いた点、要望等あればコメント下さい。 - あき (2006年02月06日 01時02分17秒)
- AAA!CAFE で、エラーになります。 「Can't load '/usr/libdata/perl/5.00503/mach/auto/Socket/Socket.so' for module Socket: Cannot open "/usr/libdata/perl/5.00503/mach/auto/Socket/Socket.so" at /usr/libdata/perl/5.00503/DynaLoader.pm line 169.」 というようなエラーがたくさんでます。ここはセキュリティ上、規約で Socket 通信を許可していないようなのですがこの CGI 自体 Socket を使用しているような感じがありません。対応できるようならお願いします。 - 名無し (2006年02月11日 00時34分12秒)
- エラーになっている場所が分かりました。 710 行目の 「get($css_fname)」 が問題のようです。 - 名無し (2006年02月11日 00時49分46秒)
- ご報告ありがとうございます。Socketモジュールは使ってませんがLWP::Simplモジュールは使ってます。theme_uriが有効か否か確認するために…。間接的に呼ばれていたりするのかもしれませんね。Socketモジュールが使えない環境っていうのは私も経験があります。レンタルサーバとかでは十分に有り得る話ですので、何とか(エラーが出ないようには)対応したいと思います。 - あき (2006年02月11日 00時56分35秒)
- ありがとうございます。ここのサーバはいろいろ制限を設けていたりなんか動作がおかしいときがあるのですがその一つとして Cwd.pm が標準モジュールでないみたいでこれをロードしようとしてエラーになってしまうので、 lib ディレクトリに Cwd.pm をコピーして use Cwd; の行を use lib './lib'; より下にしないといけないという...。 - 名無し (2006年02月11日 02時03分38秒)
- AAA!CAFEで確認したかったのですが、以前に登録していたアカウントは期限切れで使えなくなってました。新たに登録すれば良いだけなのですが、今、新規登録を一時停止しているようですね。ショック…。orz 別の手段を考えます。 - あき (2006年02月12日 13時06分24秒)
- そうですか。取り敢えず、710 行目の 「my $content = get($css_fname);」を「my $content = 1;」に変更するだけで動作はしています。(CSS のチェックはできませんが) - 名無し (2006年02月12日 23時43分55秒)
- 貴重な情報、ありがとうございます。予想していた箇所で合っていました。記載のもので修正方法もバッチリです。では、この修正方法で対応したいと思います。 - あき (2006年02月13日 00時06分32秒)
- 対応しました。setup_rev03.zip(2262)です。 - あき (2006年02月14日 19時16分57秒)
- 動作確認しました。修正ありがとうございます。あと、 .htaccess ファイルを作成すると FSWiki のディレクトリ全体が表示できなくなります(FSWiki も setup.cgi も実行できなくなります)。 .htaccess ファイルを削除すれば実行できるようになるので完全に .htaccess ファイルが原因のようです。 - 名無し (2006年02月14日 22時22分56秒)
- こちらでは問題なく動作するのですが・・・、httpd.confに指定の優先順か何かでしょうか? ですが、何も無い状態で運用するのは危険ですので、もしこれ(htaccess.zip(834))を入れてみて動作するならこれで凌いでください。 - あき (2006年02月14日 22時58分33秒)
- 動かないですね。内部サーバエラーになります。いろいろ調べてみると AAA! CAFE では .htaccess ファイルがあると正常に動作しなくなる仕様のようです。コマンドが対応していない?ということのようです。お騒がせしました。 - 名無し (2006年02月15日 00時41分42秒)
- なるほど…です。AAA! CAFEのホームページには「.htaccessが利用できます。」と書かれているのに何故なんでしょうねぇ。AAA! CAFEさんは、こういった不具合が出てるってこと、気が付いてるんでしょうか…。 - あき (2006年02月15日 00時57分14秒)
- 対応はしているが、「対応コマンドが少ない・ほとんど対応していない」ということのようです。利用できるか、出来ないかの 2 択でいったら「利用できる」ですが、実質使い物にならないということになります。 - 名無し (2006年02月15日 04時10分05秒)
- 了解です。括弧付きで「アクセス制限のみ使用可能です。」と書かれていて、まさしくアクセス制限しか記述していないのですが、それなのに駄目なんですね。いまいち、何で引っかかっているのか、スッキリしませんね。 - あき (2006年02月15日 07時15分15秒)
- FileMatchはmod_aliasの機能なので,これが無効なんでしょうね.アクセス制限って,BASIC認証のことではないでしょうか? - sakuma (2006年03月16日 11時46分40秒)
- え゛、BASIC認証のこと? だとするとかなり使えないですね。これで「.htaccessが利用できます。」と謳っているのだとすると、業者様の人間性を疑ってしまいます。 - あき (2006年03月17日 03時00分48秒)
- 本CGIを実行すると、software errorとして、「syntax error at C:/Users/Apache/htdocs/setup.cgi line 342, near ")"」のエラーが多く出てしまうのですが、何が原因なのでしょうか? - 名無しさん (2008年11月02日 16時01分09秒)
最終更新時間:2012年02月22日 20時39分13秒