Aokashi Room

作った作品の紹介やレビュー、トラブルシューティングとか色々

TOWNのパーミッションはどうやって設定する?

TOWNのスクリプトをそのままアップロードしただけじゃ正常に動きません。動作には「パーミッション」という許可設定が必要になります。

パーミッションは3桁の文字列 または r、w、x、-だけで区別しています。これには意味があってオーナー、グループ、その他の3つの中にそれぞれ呼び出し、書き込み、実行の3つを設定することができます。ここでは3桁の文字列を中心にします。ファイルをアップロードした際、最初パーミッション644(rw-r--r--)です。

f:id:aokashi:20160504132421p:plain

「644」という属性は上記の画像の通り。オーナー、グループ、その他に呼び出す権限、オーナーだけに書き込みができる権限があります。今のところオーナーもグループもその他も実行できる権限がありません。つまり、CGIファイルをアップロードして終わり。になると権限が足りないことになります。

そこで疑問がきました。CGIが実行できなくなると、HTMLも実行できなくなるのでは?と思います。でも安心してください。HTMLは実行できる権限がなくても代わりに呼び出しがあるのでHTMLは実行できる権限がなくても実行できるということです。ちなみにHTMLのみならず、PHPも同じです。多分。

CGIを実行できるようにする

さて、本題(?)に入りました。まずTOWNを動かす前にパーミッションを設定する必要がありましたが、どうやって設定します?

まず、さっきに「実行できる権限がない」とありました。つまり実行できる権限が必要です。

f:id:aokashi:20160504132422p:plain

オーナー、グループ、その他に実行出来る権限を入れました。これでパーミッションは755(rwxr-xr-x)となりました。これで実行できる権限を手に入れたため、CGIファイルを開くと、CGIが実行されます。

サブフォルダも必要

次はファイルではなくフォルダです。フォルダでは違う設定が必要になります。一部のフォルダの中には頻度に読み込み、書き込みを行ったりするファイルがあります。つまりたまにファイル が出来たり、消されたりします。そうなっていくとフォルダのなかにある全てのCGIファイルを設定するとかなり面倒な事になります。そういう時はフォルダに権限を与えます。

f:id:aokashi:20160504132422p:plain

フォ ルダではアップロード、作成するとパーミッションは755(rwxr-xr-x)です。さっき伝えたCGIファイルと同じですが恐らく別物かもしれませ ん。まず、グループに書き込む権限、その他に書き込む権限がありません。権限を与えるため、全員(オーナー、グループ、その他)に呼び出す権限、書き込む 権限、実行できる権限を与えます。

f:id:aokashi:20160504132423p:plain

そのため、パーミッションは777(rwxrwxrwx)です。ラッキーセブンですねwこれにより、そのフォルダのなかにあるCGIファイルをCGIプログラムによって読み込んだり、書き込んだり、削除ができます。

TOWNでパーミッションの設定が必要なファイル

いざ、TOWNに実行できる権限を入れようとしますが、すべてのファイルに権限を入れる必要はありません。と言うよりも入れないことをおすすめします。動作不良を起こしたり、セキュリティーが甘くなります。

設定が必要なCGIファイルは「town_ini.cgi」「atakka.cgi」「dene2.cgi」「guestlog_00.cgi」(atakka.cgiとdene2.cgiとguestlog_00.cgiはない場合もあります)の3つを除くすべてのCGIファイルです。サブフォルダのなかにあるCGIファイルには設定しないでください。

設定が必要なサブフォルダ

設定が必要なサブフォルダは「log_dir」「slot」「member」「lock」(slotフォルダはない場合もあります)の4つです。lockフォルダを設定しないといくら準備をしてもTOWNが動作しません。

実行する、実行しないフォルダを見分ける

これから先、どのファイルにパーミッションを設定するのか困ってしまいますが、焦る必要はありません。ファイルの1行目によって実行するCGIファイルと実行しないCGIファイルを見分けることができます。まず、CGIファイルを開くと1行目にこういう文字を見かけたことがありませんか?

#!/usr/local/bin/perl

これはCGIを実行することを示す「Perlパス」です。パーミッションを設定しても動作しない・・・となると原因は恐らくこれです。利用しているサーバー(ホームページスペース)によって実行可能なPerlパスが違うことがありますのでアップロードの前にかならず確認してください。ほとんどのサーバー(ホームページスペース)は「#!/usr/local/bin/perl」に対応していますので1行目に設定しておけば動作不良はないでしょう。

さて、もし1行目に「#!/usr/local/bin/perl」といったPerlパスがない場合はパーミッションを設定する必要はありません。しかし、#!から始まるものなのでたとえ1行目が「#!/usr/local/bin/perl」でなくても#!から始まるものであればパーミッションの設定は必要。また、サーバーによって動作できないPerlパスはもちろんあるのでPerlパスの修正も忘れずに。

最後に

TOWNはセキュリティに弱いです。パスワードの暗号化ができないため、パスワードを見破ってしまう場合もあります。見破ってもおかしくないように必ず別のパスワードを作ってください。つまり、他のサービスと同じパスワードを使わないでくださいということです。もしお金に関係するサービスと同じだったら・・・かなり危険です。