何べんやり直してもあかんもんはあかんようです - まんぼう日記
の話のつづきですと言うたら,タイトルの意味バレバレですな (^^)
前回書いたウェブサーバの設定では,Apache の設定ファイル httpd.conf で DocumentRoot に対して AllowOverride を許しました.したがって,.htaccess ファイルを書けば,サーバの振る舞いをディレクトリ単位で制御できることになりました.
例えば,あるディレクトリ takataka/himichu に
order deny,allow deny from all allow from 133.83.0.0/16
という .htaccess を置いたら,IPアドレス 133.83.X.Y なホスト以外からこのディレクトリ内のファイル hoge.html にアクセスしても,
Forbidden You don't have permission to access /takataka/himichu/hoge.html on this server.
みたいに言われることになるわけです.
一方,httpd.conf では,DocumentRoot に対して同様に,
Options FollowSymLinks
という設定もしていました.シンボリックリンクたどるよってわけです.ということは....himichu の外でかつ .htaccess によるアクセス制御してないようなディレクトリ内に,上記のファイル hoge.html に対するシンボリックリンクを作ったら....たとえば,
takataka/himichu-hoge.html -> takataka/himichu/hoge.html
となるようなシンボリックリンクを張ったら,himichu-hoge.html へのアクセスでは当然 himichu/.htaccess は参照してもらえないので,hoge.html の内容がどこからでも見えちゃうわけですね.
というわけで,こういうことになります (^^;
http://www-tlab.math.ryukoku.ac.jp/~takataka/himichu/hoge.html
あ,本当は上記のURLの例では,ユーザ毎のホームディレクトリの一部を公開する設定に関する httpd-userdir.conf の方が有効になってるので,そっちの
AllowOverride FileInfo AuthConfig Limit Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
が効いてる(FollowSymLinksじゃなくてSymLinksIfOwnerMatch)んですが,説明くどくなるので置き換えて説明してます.
まあ上記のようにファイルのリンクやとさすがに気づくでしょうが,ディレクトリのリンクやと,うっかりしがちです.というか,たかたかがつい忘れることがあったので,自戒をこめて記事にしとくことにしました.